例如後取下原始列表中的元素,在C#我可以選擇從原始列表中的元素:過濾
List<string> result = first_mas.Where(d => d == "1").First().ToList();
如果我從result
刪除元素,相同的元件也將被從first_mas
除去。
在Java中,我可以做這樣的事情:
List<String> result = first_mas.stream().filter(d -> d.equals("1")).collect(Collectors.toList());
但是,如果我從result
刪除元素,他們將不會從原始數組中刪除。
過濾後是否可以從原始列表中刪除元素?
UPD:
public void doSomething(List<String> list){
// here remove something from list, should also be removed from original list
// i don't have link to original list here
}
doSomething(first_mas.stream().filter(d -> d.get(0).equals("1")).collect(Collectors.toList()));
如果您無權訪問原始列表,則無法移除/訪問它的元素。 – Don
我不明白這個問題。你可以擴展一個示例輸入/輸出嗎?你還可以擴展你的用例嗎? – Tunaki
我沒有看到使用Java8流的方式。我知道Google Guava的收集實用程序可以執行以下操作:Collections.filter實用程序方法提供原始列表的「實時視圖」,並且修改會傳播回原始列表。雖然這不是一回事。 – GPI