12

Vectorそのインスタンスがクラスの場合にのみ、要素を反復処理し、結果をたとえば配列に格納する必要があるユースケースがあります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 に答える