Java
java8
Stream

【Java8】Streamで重複削除(& 重複チェック)

Stream#distinctを用いたリストの重複削除について書きます。

重複削除

重複削除はdistinctしてからcollectでリストに変更することでできます。

重複削除
List<Integer> list = Arrays.asList(1, 1, 2, 3, 4, 5);
//[1, 2, 3, 4, 5]になる
List<Integer> ans = list.stream().distinct().collect(Collectors.toList());

重複チェック

@swordoneさんから頂いたコード(コメント欄)の方がスマートだったので、重複チェックはこちらを使った方が良いです。

重複チェック
List<Integer> list = Arrays.asList(1, 1, 2, 3, 4, 5);
boolean ans = (list.size() == new HashSet<>(list).size());

旧版

非効率ですがstreamを使う旧版も一応残します。

重複チェック
List<Integer> list = Arrays.asList(1, 1, 2, 3, 4, 5);
boolean ans = (list.size() == list.stream().distinct().count());

参考にさせて頂いた記事