Java - List의 중복 제거, 중복 체크 방법

By JS | Last updated: June 14, 2021

List에 중복된 값이 있는지 확인하고, 제거하는 방법을 소개합니다.

Stream.distinct() : 중복 확인

Stream.distinct()는 Stream의 중복을 모두 제거합니다. count()는 Stream의 사이즈를 리턴하며, List의 크기와 다를 때 중복이 있음을 확인할 수 있습니다.

String[] arr = {"a", "b", "c", "d", "a", "e"};
List<String> list = new ArrayList<>(List.of(arr));

if (list.size() != list.stream().distinct().count()) {
    System.out.println("List contains duplicates");
}

Output:

List contains duplicates

중복 제거된 리스트

distinct()로 중복을 제거하고, collect(Collectors.toList())로 다시 리스트로 출력할 수 있습니다.

String[] arr = {"a", "b", "c", "d", "a", "e"};
List<String> list = new ArrayList<>(List.of(arr));

List<String> result = list.stream().distinct().collect(Collectors.toList());
System.out.println("result : " + result);

Output:

result : [a, b, c, d, e]

Set : 중복 확인

Set는 중복이 허용되지 않는 자료구조입니다. List의 모든 내용을 Set에 넣으면 중복이 제거된 아이템만 남게 됩니다. List와 Set의 size 비교로 리스트에 중복된 값이 있는지 확인할 수 있습니다.

String[] arr = {"a", "b", "c", "d", "a", "e"};
List<String> list = new ArrayList<>(List.of(arr));

Set<String> set = new HashSet<>(list);
if (set.size() != list.size()) {
    System.out.println("List contains duplicates");
}

Output:

List contains duplicates

중복이 제거된 리스트

중복이 제거된 Set를 다시 List로 변환하면, 중복이 제거된 List를 얻게 됩니다.

String[] arr = {"a", "b", "c", "d", "a", "e"};
List<String> list = new ArrayList<>(List.of(arr));

Set<String> set = new HashSet<>(list);

List<String> result = new ArrayList<>(set);
System.out.println("result : " + result);

Output:

result : [a, b, c, d, e]

Related Posts

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha