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)
.