どのように私は直接値に基づいてコレクションをフィルタリングすることができますか?

A.BC:

私は、特定の値を含むコレクションからすべての要素を取得することができますどのように知っていただきたいと思います。

このような:

@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);

しかし、私はこの例を適用する方法を知ってはいけません。

ありがとうございました。

Ousmane D .:

ストリームを使用して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)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177241&siteId=1