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)
但我不知道如何应用这个例子.
谢谢.
使用流和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).
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |