私は何をしようとしていません私は私のリスト内のすべてのオブジェクトを削除するように見えることはできません。 私はいつもアイテムの半分を取り除きますが、残りの半分は何らかの理由で残っています。リスト内のオブジェクトの束を取り除く方法
非常に感謝しています。
私は何をしようとしていません私は私のリスト内のすべてのオブジェクトを削除するように見えることはできません。 私はいつもアイテムの半分を取り除きますが、残りの半分は何らかの理由で残っています。リスト内のオブジェクトの束を取り除く方法
非常に感謝しています。
ループ中にリストを変更しているため、すべての2番目のアイテムが削除されます。つまり、0番目の要素を削除します。その場合、1番目の要素が置き換えられ、新しい1番目の要素などに移動します。 デバッガを使用した場合は、これが発生します。
最も簡単なことは、要素を前後に移動させないので、逆の順序で要素を削除することです。
for(int i=listCon.size()-1; i>=0; i--)
removeConnection(listCon.get(i));
繰り返し処理中にリストからオブジェクトを削除する古典的な問題です。
for(int i=0; i < listCon.size(); i++)
{
removeConnection(listCon.get(i));
}
あなた
これに対する多くの解決策。 1つの一般的な方法は、サイズが0になるまで要素0を削除することです。
EDIT:実際には他の操作なしで配列をクリアするだけの目的ならば、listCon.clear()
がはるかに良いアプローチです。私は、removeConnection
が要素をリストから削除するだけではなく、あなたの例を単純にすることを示していないことを前提にしています。
または 'clear()'を使うか、 'List.size() - 1'から削除を始め、' i'を減らすか、 'List'を再初期化してください:' listCon = new ArrayList
'removeConnection()'間接指定は、 'removeConnection'がリストから要素を削除するよりも多くのクリーンアップ作業を実行するので、私はそれを追加しようとしていました。そうでない場合は、明らかにclear()が望ましい解決策です。私はおそらくそれを追加する必要があります。 – EboMike
私はオブジェクトが削除される直前にothermethodを呼び出さなければならなかったので、私はピーターズの答えを好むが、解決策をありがとう。よろしくお願いします。 – JeffBr
ループ構造で配列構造を変更していますが、これは実際に経験したとおりの悪い考えです。要素を削除すると配列要素が移動するため、要素をスキップします。
while(listCon.size() > 0){
listCont.remove(0);
}
が
次回、ウィル、次回はまだアップヴォートの価値があります。 – EboMike
何のリストは、()メソッドを使用して.clearについては、それを私にビート@ebomike:
これを行うための最善の方法
は、whileループを使用していますか?繰り返し実行中に段階的に削除する必要がある場合は、リストイテレータとremove()メソッドを使用する必要があります。
あなたはこの方法でリストからオブジェクトを削除した後に「私は」によって参照されているものに変化している:
Iterator it = listCon.iterator();
while(it.hasNext())
{
it.remove();
}
かで:
public void inActivate()
{
for(int i=0; i < listCon.size(); i++)
{
removeConnection(listCon.get(i));
}
}
をする代わりに、イテレータを使用この場合は、リストをクリアしてください:
listCon.clear();
なぜ使用しないのですか?listCon.clear()
? for(int i = listCon.size -1; i >=0; i--) { listCon.remove(i); }
やウィルKRUなど
は、常に、
最後に0番目の要素を削除するイテレータを使用することを示唆してiterator.remove:それに失敗
、あなたのループを逆に for(Iterator<Connection> i = listCon.iterator(); i.hasNext();) { Connection c = i.next(); i.remove(); }
typo?私は++をi - –
に変更しました。++を '--'に変更する自由を取った –
@Bart、@ありがとうございます。 –