3

Iterator (LinkedList.iterator()) オブジェクトを使用して Java で問題が発生しています。ループでは、反復子オブジェクトをある場所からリストの最後に移動する必要があります。

例えば:

final Iterator<Transition> it = this.transitions.iterator();
while(it.hasNext()) {
    final Transition object = it.next();

    if(object.id == 3){
        // Move to end of this.transitions list
        // without throw ConcurrentModificationException
    }
}

何らかの理由で this.transitions を複製できません。それは可能ですか、それとも本当にクローン方法を使用する必要がありますか?

編集:現在、私はそれをしています:

        it.remove();
        this.transitions.add(object);

しかし、問題はこの 2 行目だけです。itens を追加できません。同じオブジェクトの反復子の内部にいます。:(

4

1 に答える 1

5

追加する要素の 2 番目のリストを保持できます。

final Iterator<Transition> it = this.transitions.iterator();
final List<Transition> tmp = new ArrayList();//using a list will keep the order
while(it.hasNext()) {
    final Transition object = it.next();

    if(object.id == 3){
        it.remove();
        tmp.add(object);
    }
}
this.transitions.addAll(tmp);
于 2011-05-22T00:55:25.507 に答える