자바에서 중복된 요소를 제거하는 방법은 무엇인가요?
자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다.
주로 컬렉션프레임워크를 활용하며, 대표적으로 `Set` 인터페이스와 스트림(Stream) API를 이용하는 방법이 사용됩니다.
아래에 주요 방법들을 설명하겠습니다.
--- 1. Set 컬렉션을 이용하기 (HashSet, LinkedHashSet, TreeSet) `Set`은 중복된 요소를 허용하지 않는 컬렉션이므로 리스트나 배열의 중복 요소를 제거할 때 많이 사용됩니다.
1.1. HashSet 사용하기 ```java import java.util.*; public class RemoveDuplicatesExample { public static void main(String[] args) { List
1.2. LinkedHashSet 사용하기 (순서 유지) ```java Set
1.3. TreeSet 사용하기 (정렬된 순서로 중복 제거) ```java Set
--- 2. Java 8 이후 스트림 (Stream API) 사용하기 스트림 API를 이용하면 더 선언적이고 간결하게 중복 제거 및 다양한 처리를 할 수 있습니다.
```java import java.util.*; import java.util.stream.*; public class RemoveDuplicatesStream { public static void main(String[] args) { List
- 스트림은 가독성이 좋아서 많이 선호됩니다.
--- 3. 배열에서 중복 제거하기 배열을 대상으로 중복을 제거하려면 위에서 소개한 컬렉션과 스트림 방식을 응용해야 합니다.
```java import java.util.*; import java.util.stream.*; public class RemoveDuplicatesArray { public static void main(String[] args) { String[] array = {"apple", "banana", "apple", "orange", "banana"}; String[] noDuplicates = Arrays.stream(array) .distinct() .toArray(String[]::new); System.out.println(Arrays.toString(noDuplicates)); } } ``` --- 4. 직접 구현하는 방법 (예: 중복 검사 알고리즘) 컬렉션을 쓰지 않고 직접 for문과 조건문으로 중복을 제거할 수 있으나, 코드가 복잡해지고 비효율적일 수 있습니다.
일반적으로 위의 방법을 권장합니다.
| 방법 | 특징 | 순서 유지 | 정렬 가능 | |-----------------------|----------------------------|---------|--------| | HashSet | 중복 제거, 순서 미보장 | No | No | | LinkedHashSet | 중복 제거, 입력 순서 유지 | Yes | No | | TreeSet | 중복 제거, 오름차순 정렬 | 정렬 순서 | Yes | | Stream API distinct() | 중복 제거, 순서 유지 (원본 리스트 순서대로) | Yes | No | --- 중복 제거는 자바에서 매우 자주 사용하는 기능이며, 상황에 따라 적절한 방법을 선택해 사용하면 됩니다.
컬렉션을 활용한 방법이나 Stream API를 활용한 방법이 가장 편리하고 유지보수에도 좋으니 참고하시기 바랍니다.