A.B*_*.BC 5 java lambda filtering java-8
我想知道如何从包含特定值的集合中获取所有元素.
像这样:
@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;
}
但我想直接过滤集合.我读到我可以使用LAMBDA做到这一点,例如:
list.removeIf(c -> c.getCarColor() == Color.BLUE);
但我不知道如何应用这个例子.
谢谢.
使用流和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));
这保留了满足所提供谓词的元素sale -> sale.getMap().equals(mapName).
注意上面的内容不会修改源代码,如果要修改源代码,请继续removeIf:
salesList.removeIf(sale -> !sale.getMap().equals(mapName));
这将删除满足提供的谓词的元素sale -> !sale.getMap().equals(mapName).