如何在Java中迭代向量并仅存储指定的类?

Ant*_*t's 12 java iterator

我有一个用例,我需要迭代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();
    }
Run Code Online (Sandbox Code Playgroud)

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

Par*_*ade 20

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

    List<Method> list = new ArrayList<Method>();
    for (Object obj : vector) {
        if (obj instanceof Method) {
            list.add(obj);
        }
    }
Run Code Online (Sandbox Code Playgroud)


Bog*_* T. 5

是不是有人担心没有同步迭代Vector?

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