프로그래밍 공부
자바 컬렉션 - Set 인터페이스 본문
Set 인터페이스
소개
- Java의
Set
인터페이스는 중복된 요소를 허용하지 않는 컬렉션을 정의하는 인터페이스임. Set
은 Java Collections Framework의 일부로, 집합을 표현하는 데 사용된다.
주요 특징
- 중복 요소 없음:
Set
은 동일한 요소를 두 번 저장할 수 없음. 따라서 중복된 값을 자동으로 제거함. - 순서 없음:
Set
인터페이스를 구현한 클래스는 요소의 순서를 보장하지 않음.
따라서 요소가 저장된 순서와 상관없이 요소를 가져올 수 있음. - null 값 허용:
Set
은 null 값을 허용함. 단, 한 개의 null 값만 저장할 수 있음.
주요 구현 클래스
Set
인터페이스를 구현하는 주요 클래스는 다음과 같다:
HashSet:
해시 테이블을 기반으로 구현됨.
빠른 검색 성능을 제공 (평균 O(1) 시간 복잡도).
요소의 순서를 보장하지 않음.
null 요소를 허용.
Set<String> hashSet = new HashSet<>(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Apple"); // 중복 요소는 추가되지 않음
LinkedHashSet:
HashSet
의 기능을 확장하여 요소의 삽입 순서를 유지함.순서가 중요한 경우 사용.
Set<String> linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add("Apple"); linkedHashSet.add("Banana"); linkedHashSet.add("Cherry"); // 삽입 순서 유지
TreeSet:
이진 검색 트리를 기반으로 구현.
요소가 정렬된 상태로 유지됨(자연 순서 또는 지정된 Comparator에 따라).
중복 요소는 허용되지 않음.
Set<Integer> treeSet = new TreeSet<>(); treeSet.add(3); treeSet.add(1); treeSet.add(2); // 요소가 정렬됨 // 출력: 1, 2, 3
주요 메서드
add(E e)
: 요소를 추가합니다. 요소가 이미 존재하면 false를 반환.remove(Object o)
: 지정된 요소를 제거.contains(Object o)
: 지정된 요소가 Set에 존재하는지 확인.size()
: Set의 크기를 반환.isEmpty()
: Set이 비어 있는지 확인.iterator()
: Set의 요소를 순회할 수 있는 반복자를 반환.
사용 예시
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.add("Apple"); // 중복 추가
System.out.println(fruits); // [Banana, Cherry, Apple] (순서는 보장되지 않음)
}
}
요약
- 이와 같이
Set
인터페이스는 중복을 허용하지 않고
다양한 구현체를 통해 상황에 맞게 사용할 수 있는 유용한 컬렉션임. - HashSet은 삽입 순서, 정렬 순서에 관계 없음
- LinkedHashSet은 삽입 순서대로 데이터가 저장
- TreeSet은 데이터가 정렬된 채로 저장됨
'Programming > JAVA' 카테고리의 다른 글
자바 컬렉션 - Map (0) | 2024.10.08 |
---|---|
자바 컬렉션 - Queue, PriorityQueue (0) | 2024.10.08 |
자바 컬렉션 - List 인터페이스 (3) | 2024.10.08 |
자바 컬렉션(Java Collection Framework) (0) | 2024.10.08 |
객체지향 프로그래밍(다형성) (0) | 2024.10.08 |
Comments