12

我有一个用例,我需要迭代Vector元素并将结果存储在 say 数组中,前提是该实例属于类method

有什么容易做到的吗?

目前我正在这样做:

    Iterator itr = vec.iterator();
    Iterator element = vec.iterator();

    while(itr.hasNext())
    {
        boolean method = itr.next() instanceof Method;
        if(method)
            System.out.println( "\t" + ( (Method)(element.next()) ).name);
        else
            element.next();
    }

但我认为会有比这更好的方法。

4

3 回答 3

21

假设你有一个类Method,那么代码可能是这样的:

    List<Method> list = new ArrayList<Method>();
    for (Object obj : vector) {
        if (obj instanceof Method) {
            list.add(obj);
        }
    }
于 2012-12-08T14:43:17.320 回答
5

没有人担心在没有同步的情况下迭代 Vector 吗?

如果vector不是线程受限的,在存在另一个线程修改其内容的情况下,for-each 迭代可能会抛出ConcurrentModificationException.

于 2014-02-15T09:55:53.333 回答
1

在 Java 8 中,您可以调用.stream()返回向量元素流的方法,因此可以通过调用 Collector 来存储元素,例如存储在列表中

Vector<String> vec = new Vector<>();
vec.add("hello");
vec.add("world");

List<String> list = vec.stream().collect(Collectors.toList());
于 2017-06-15T12:00:24.443 回答