Javaストリームと同じリストに含まれていない結果のリストを取得します

デレク・ジョーンズ:

私はのリスト考えてみましょうToFilter外観は次のようにというオブジェクトを:

private class ToFilter {
    String option1;
    String option2;
}

Javaを使用して、私はとToFilterの4つのインスタンスがある場合、たとえば、オプション1は、他のオブジェクトのオプション2.そうに含まれていないすべての要素をフィルタリングしたいストリーム:

option1 = C,
option2 = A

option1 = C,
option2 = F

option1 = A,
option2 = B

option1 = A,
option2 = D

Cを濾過し、それがのエントリ持っているので、結果セットに含まれるべきでoption1はなく、option2他のオブジェクトのを。以下のような何かがnonematch()、それは実際のリストを返すToFilterというだけで、ブール真よりもオブジェクトを。

ernest_k:

私はすべてのセットの作成、2つのストリームを使用することになりoption2、私がチェックし、それに対して値option1のコレクションから値を:

List<ToFilter> list = ...;

Set<String> option2Set = list.stream()
        .map(ToFilter::getOption2)
        .collect(Collectors.toSet());

List<ToFilter> filtered = list.stream()
        .filter(f -> !option2Set.contains(f.getOption1()))
        .collect(Collectors.toList());

おすすめ

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