Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java ArrayList에서 중복 요소 제거하는 방법 총정리

이 글에서는 Java의 ArrayList에서 중복된 항목을 제거하는 다양한 방법을 예제 코드와 함께 소개합니다.

ArrayList에서 문자열 중복 제거하기

Set 컬렉션은 중복 요소를 저장할 수 없다는 특징이 있습니다. 이 특성을 활용하면, 중복이 포함된 ArrayList를 Set 객체 생성 시 생성자의 매개변수로 전달하여 손쉽게 중복을 제거할 수 있습니다.

예제 코드는 다음과 같습니다:

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Set;

public class RemoveDuplicatesFromArrayList {

    public static void main(String[] args) {
        ArrayList<String> pets = new ArrayList<>();

        pets.add("cat");
        pets.add("dog");
        pets.add("cat");
        pets.add("hamster");

        System.out.println(pets);

        Set<String> hashSet = new LinkedHashSet(pets);
        ArrayList<String> removedDuplicates = new ArrayList(hashSet);

        System.out.println(removedDuplicates);
    }
}

실행 결과:

[cat, dog, cat, hamster]
[cat, dog, hamster]

여기서 LinkedHashSet을 사용하면 중복 제거와 동시에 원본 리스트의 삽입 순서까지 유지할 수 있다는 장점이 있습니다. 만약 순서가 중요하지 않다면 HashSet을 사용해도 무방합니다.

  • Java에서 두 개의 ArrayList 비교하는 방법
  • Java에서 ArrayList 순회하는 방법
  • Java에서 List를 배열로 변환하는 방법

리스트에서 정수 중복 제거하기

문자열뿐만 아니라 정수(Integer) 리스트에서도 동일한 방식으로 중복을 제거할 수 있습니다.

import java.util.*;

public class RemoveDuplicatesFromArrayList {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1,2,2,2,3,5);

        System.out.println(numbers);

        Set<Integer> hashSet = new LinkedHashSet(numbers);
        ArrayList<Integer> removedDuplicates = new ArrayList(hashSet);

        System.out.println(removedDuplicates);
    }
}

실행 결과:

[1, 2, 2, 2, 3, 5]
[1, 2, 3, 5]

Java 8 Stream으로 리스트 중복 제거하기

Java 8부터 도입된 Stream API를 사용하면 더욱 간결하게 중복을 제거할 수 있습니다. stream()distinct() 메서드를 조합하면 한 줄로 해결됩니다.

import java.util.*;
import java.util.stream.Collectors;

public class RemoveDuplicatesFromArrayList {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1,2,2,2,3,5);

        System.out.println(numbers);

        List<Integer> removedDuplicates = numbers.stream()
                .distinct()
                .collect(Collectors.toList());

        System.out.println(removedDuplicates);
    }
}

실행 결과:

[1, 2, 2, 2, 3, 5]
[1, 2, 3, 5]

정리하면, Java에서 리스트의 중복을 제거하는 대표적인 방법은 두 가지입니다. 첫째, Set의 중복 불가 특성을 활용해 LinkedHashSet으로 변환 후 다시 리스트로 만드는 방법이고, 둘째, Java 8 이상 환경에서 Stream.distinct()를 사용하는 방법입니다. 원본 순서를 유지해야 한다면 두 방법 모두 적합하며, 코드 가독성 측면에서는 Stream API 방식이 더 우수합니다.