我有來自文件的行的ArrayList。 文件包含線,5號:Collection.removeIf奇怪地工作
1 1 13 25 25
25 25 11 3 1
25 25 13 1 1
而且我有功能測試(字符串)來測試,如果我需要這行或者如果我必須從列表中刪除。 我的測試方法:
static boolean test(String s){
return list.contains(reverse(s));
}
反向(字符串)返回與寫入順序相反的數字線。 對於1 1 13 25 25
它將返回25 25 13 1 1
。
因此,我編寫了使用迭代器遍歷列表並刪除元素的代碼。
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 ...以提供一個小例子,可用於** repro **您的問題。 – GhostCat
你能告訴我們'test'方法嗎? – GurV
Thx爲'test'方法。我仍然希望看到並運行一個完整的示例。 –