Set
Java에서 Set은 중복 요소를 허용하지 않는 컬렉션입니다. 이는 Java 컬렉션 프레임워크의 일부이며 특별한 순서 없이 요소 그룹을 저장하는 데 사용됩니다. Java는 HashSet, TreeSet 및 LinkedHashSet과 같은 Set 인터페이스를 구현하는 여러 클래스를 제공합니다.
예를 들어 각각을 살펴보겠습니다.
import java.util.*;
public class SetExample {
public static void main(String[] args) {
// Creating a HashSet
Set<String> hashSet = new HashSet<>();
// Adding elements to the HashSet
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");
hashSet.add("banana"); // Duplicate element, will not be added
System.out.println("HashSet: " + hashSet);
// Creating a TreeSet
Set<Integer> treeSet = new TreeSet<>();
// Adding elements to the TreeSet
treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
treeSet.add(2); // Duplicate element, will not be added
System.out.println("TreeSet: " + treeSet);
// Creating a LinkedHashSet
Set<Character> linkedHashSet = new LinkedHashSet<>();
// Adding elements to the LinkedHashSet
linkedHashSet.add('a');
linkedHashSet.add('b');
linkedHashSet.add('c');
linkedHashSet.add('b'); // Duplicate element, will not be added
System.out.println("LinkedHashSet: " + linkedHashSet);
}
}
이 예에서는 HashSet, TreeSet 및 LinkedHashSet의 세 가지 다른 Set 구현을 사용하는 방법을 보여주었습니다.
HashSet
요소를 해시 테이블에 저장하여 추가, 제거, 포함과 같은 기본 작업에 대해 지속적인 성능을 제공합니다. 그러나 요소의 특정 순서를 보장하지는 않습니다.
TreeSet
정렬된 트리 구조로 요소를 저장합니다. 요소는 자연 순서나 제공된 비교기에 따라 자동으로 정렬됩니다. 결과적으로 TreeSet의 요소를 반복하면 정렬된 순서로 요소가 제공됩니다.
LinkedHashSet
Set에 요소가 삽입된 순서를 유지합니다. 삽입 순서를 유지하기 위해 해시 테이블과 연결 목록을 결합합니다.
세 가지 경우 모두 중복 요소가 자동으로 제거됩니다. 예제 코드를 실행하면 중복된 요소(“banana” 및 “2”)가 출력에 표시되지 않는 것을 볼 수 있습니다.
사용할 Set 구현의 선택은 특정 사용 사례에 따라 다르다는 점을 기억하세요. 중복 없이 빠르고 순서 없는 액세스가 필요한 경우 HashSet이 좋은 선택입니다. 요소를 정렬해야 하는 경우 TreeSet이 적합합니다. 삽입 순서를 유지하려면 LinkedHashSet이 옵션입니다.