0

私はこのようなことをする必要があります...

Collection<T> myCollection; ///assume it is initialized and filled


for(Iterator<?> index = myCollection.iterator(); index.hasNext();)
{
    Object item = index.next();
    myCollection.remove(item);
}

明らかに、これは ConcurrentModificationException をスローします...

だから私はこれを試しましたが、エレガント/効率的とは思えず、 Type safety: Unchecked cast from Object to T 警告をスローします

Object[] list = myCollection.toArray();
for(int index = list.length - 1; index >= 0; index--) {
 myCollection.remove((T)list[index]);
}
4

2 に答える 2

0

補足として、この場合も元のコレクションのタイプが重要です。たとえば、Arrays.asList(new Integer[]{1, 2, 3});奇妙なことに を作成しUnmodifiableListます。この場合、空の ArrayList perform をインスタンス化する必要がありますnewList.addAll(Arrays.asList(new Integer[]{1, 2, 3});

于 2010-01-13T05:10:35.160 に答える