Este grupo de especialistas pasados varios días de investigación y de recopilar de datos, hallamos la solución, esperamos que todo este artículo sea de gran utilidad en tu proyecto.
Solución:
map.entrySet().removeIf(entry -> entry.getValue().equals("0"));
No puede hacerlo con secuencias, pero puede hacerlo con los otros métodos nuevos.
EDITAR: aún mejor:
map.values().removeAll(Collections.singleton("0"));
Creo que no es posible (o definitivamente no debería hacerse) debido al deseo de Streams de tener No-interferencia, como se describe aquí
Si piensa en flujos como sus construcciones de programación funcional filtradas en Java, entonces piense en los objetos que los respaldan como sus contrapartes funcionales y en la programación funcional opera en objetos inmutables
Y la mejor manera de lidiar con esto es usar el filtro como lo hizo
1ra vez respondiendo. Encontré este hilo y pensé en actualizar si otros están buscando. Usando transmisiones, puede devolver un mapa filtrado <> o lo que realmente le guste.
@Test
public void test()
Map map1 = new HashMap<>();
map1.put("dan", "good");
map1.put("Jess", "Good");
map1.put("Jaxon", "Bad");
map1.put("Maggie", "Great");
map1.put("Allie", "Bad");
System.out.println("nFilter on key ...");
Map map2 = map1.entrySet().stream().filter(x ->
x.getKey().startsWith("J"))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
map2.entrySet()
.forEach(s -> System.out.println(s));
System.out.println("nFilter on value ...");
map1.entrySet().stream()
.filter(x -> !x.getValue().equalsIgnoreCase("bad"))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()))
.entrySet().stream()
.forEach(s -> System.out.println(s));
------- output -------
Filter on key ...
Jaxon=Bad
Jess=Good
Filter on value ...
dan=good
Jess=Good
Maggie=Great