Java / Ope / Collection操作 / etc / 共通部分を取る

Java / Ope / Collection操作 / etc / 共通部分を取る

共通条件を設定してコレクション同士の共通要素を集める場合。

List<Piyo> piyoList1 = new ArrayList<>();
List<Piyo> piyoList2 = new ArrayList<>();
 
piyoList1.add(new Piyo("a"));
piyoList1.add(new Piyo("b"));
piyoList1.add(new Piyo("c"));
piyoList1.add(new Piyo("d"));
piyoList1.add(new Piyo("e"));
 
piyoList2.add(new Piyo("c"));
piyoList2.add(new Piyo("d"));
piyoList2.add(new Piyo("e"));
piyoList2.add(new Piyo("f"));
piyoList2.add(new Piyo("g"));
 
List piyoListIntersection = piyoList1.stream().filter(
        p1 -> {
            return piyoList2.stream().anyMatch(
                    p2 -> {
                        return p1.getV1().equals(p2.getV1());
                    });
        }).collect(Collectors.toList());
 
for (Piyo piyo : piyoListIntersection) {
    System.out.println(piyo.getV1());  // => c d e
}

このようになる。やや丁寧に書いているが、短く書けば一行で書ける。

java/ope/collection_ope/etc/intersection.txt · 最終更新: 2021-07-09 15:29 by ore