如何根据值直接过滤集合?

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;
}
Run Code Online (Sandbox Code Playgroud)

但我想直接过滤集合.我读到我可以使用LAMBDA做到这一点,例如:

list.removeIf(c -> c.getCarColor() == Color.BLUE);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何应用这个例子.

谢谢.

Ous*_* D. 7

使用流和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));
Run Code Online (Sandbox Code Playgroud)

保留了满足所提供谓词的元素sale -> sale.getMap().equals(mapName).

注意上面的内容不会修改源代码,如果要修改源代码,请继续removeIf:

salesList.removeIf(sale -> !sale.getMap().equals(mapName));
Run Code Online (Sandbox Code Playgroud)

将删除满足提供的谓词的元素sale -> !sale.getMap().equals(mapName).