Saltar al contenido

Cómo eliminar un elemento de un HashMap durante la transmisión (lambda)

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *