Edited at

【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());


参考にさせて頂いた記事