¿Cómo se filtran directamente una colección basada en un valor?

A B C :

Me gustaría saber cómo puedo conseguir todos los elementos de una colección que contiene un valor específico.

Me gusta esto:

@Override
public Collection<Sale> selectSales(String map) {
    HashSet<Sale> sales = new HashSet();

    for (Sale sale : salesList) {
        if (sale.getMap().equals(map)) {
            sales.add(sale);
        }
    }
    return sales;
}

Pero me gustaría filtrar la colección directamente. He leído que puedo hacer esto usando LAMBDA, ejemplo:

list.removeIf(c -> c.getCarColor() == Color.BLUE);

Pero no sé cómo aplicar este ejemplo.

Gracias.

Ousmane D .:

utilizar un arroyo y filter:

salesList.stream()
         .filter(sale -> sale.getMap().equals(mapName)) // I've changed map to mapName as I am assuming that was a mistake
         .collect(Collectors.toCollection(HashSet::new));

Esto conserva los elementos que satisfacen el predicado proporcionado sale -> sale.getMap().equals(mapName).

Tenga en cuenta lo anterior no modificar la fuente, si desea modificar la fuente a continuación, proceder a removeIf:

salesList.removeIf(sale -> !sale.getMap().equals(mapName));

Esto elimina los elementos que satisfacen el predicado proporcionado sale -> !sale.getMap().equals(mapName).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=177244&siteId=1
Recomendado
Clasificación