私はファイルからの行のArrayListを持っています。Collection.removeIfが異常に機能します
1 1 13 25 25
25 25 11 3 1
25 25 13 1 1
そして、私はリストから削除する必要がある場合、私は、私はこの行を必要とするかどうかをテストする機能テスト(String)を持っているか: ファイルは5つの数字で行が含まれています。 マイ試験方法:
static boolean test(String s){
return list.contains(reverse(s));
}
逆(文字列)は、逆の順序で記述された番号の行を返します。 1 1 13 25 25
については、25 25 13 1 1
が返されます。
したがって、Iteratorを使用してリストをループして要素を削除するコードを記述しました。
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
if(test(iter.next()))
iter.remove();
}
このコードは正しく動作します。 しかし、IDEAによれば、このループはCollection.removeIf呼び出しで置き換えることができます。
list.removeIf(s->test(s));
しかし、それは私の空のリストを与える: だから、私はこのラインで上記のコードを交換しようとしました。どうして?違いはなんですか?
また、removeIfを使用して特定の文字を含む行を削除しようとしましたが、正しく動作します。 ここにすべてのプログラムが表示されます:http://pastebin.com/bWw3cBXg。一般的に悪い考えで、それを修正しながら、(その上にを呼び出すことによって)あなたは、リストを反復処理している
マイファイルhttp://pastebin.com/mEb5sBBJ(〜17000行)
音が奇妙です。 *あなたがやっていることを見ているからです...それは有効なアプローチのようです。したがって、問題を再現するために使用できる小さな例を提供するためには、http://stackoverflow.com/help/mcveを調べることをお勧めします。 – GhostCat
'test'メソッドを表示できますか? – GurV
'test'メソッドのThx。私はまだ完全な例を見て実行したいと思います。 –