2014-05-22 32 views

cevap

65
map.entrySet().removeIf(entry -> entry.getValue().equals("0")); 
yaptığı gibi filtreyi kullanmaktır

Akışlarla yapamazsınız, ancak bunu diğer yeni yöntemlerle yapabilirsiniz.

DÜZENLEME: daha iyi:

map.values().removeAll(Collections.singleton("0")); 
+0

Mükemmel - Beni yerine iterating uzun soluklu eski yöntemin bu bir satır kullanmasını sağlar. – Dan

+0

Bu, entrySet'ten kaldırılmayacak, haritanın kendiliğinden kaldırılmayacak mı yoksa otomatik senkronize mi yapılıyor? –

+9

entrySet bir görünümdür; ona yapılan değişiklikler haritaya yansıtılır ve tam tersi; bağımsız bir varlığı yoktur. –

2

Ben, senin işlevsel programlama yapıları Java içine sızan gibi akışları düşünürsen here

açıklandığı gibi, bağlı olmayan iterference sahip Akışları arzusuna (yapılmamalıdır deffinitelly ya) bu mümkün değil düşünüyorum sonra onların fonksiyonel karşıtları olarak kendilerine destek ve fonksiyonel programlamada, sabit nesneler

üzerinde işlem nesneleri düşünün ve bununla başa çıkmak için en iyi yol için size