[Java] 기초 - Set

이지연·2025년 12월 15일

개요

아래의 내용은 java_grammer 레파지토리 C01Basic 디렉터리에 저장되어있는 내용을 정리하였다.


Set 특징

Set중복을 허용하지 않고 순서 보장을 하지 않는 컬렉션이다.
Hash 테이블 기반으로 O(1) 성능을 제공하며, 중복 제거가 필요한 경우 많이 사용된다

Set<String> mySet = new HashSet<>();
mySet.add("야구");
mySet.add("농구");
mySet.add("야구");  // 중복 무시
mySet.add("축구");
System.out.println(mySet);  // [축구, 야구, 농구]
System.out.println("HashSet contains : " + mySet.contains("야구"));  // true (O(1))

집합 연산 함수

Set은 교집합(retainAll), 합집합(addAll), 차집합(removeAll) 연산을 지원한다

Set<String> s1 = new HashSet<>();
s1.add("java"); s1.add("python"); s1.add("c++");
Set<String> s2 = new HashSet<>();
s2.add("java"); s2.add("html"); s2.add("css");

// retainAll: 교집합 (s1만 변경)
s1.retainAll(s2);
System.out.println("retainAll s1: " + s1);  // [java]

// addAll: 합집합 (s1에 s2 추가)
s1.addAll(s2);
System.out.println("addAll s1: " + s1);  // [java, html, css]

// removeAll: 차집합 (s1에서 s2 제거)
s1.removeAll(s2);
System.out.println("removeAll s1: " + s1);  // []

TreeSet

TreeSet자동 오름차순 정렬을 제공하는 Set이다.
Red-Black Tree 기반으로 정렬된 순서 보장

Set<String> mySet2 = new TreeSet<>();
mySet2.add("야구");
mySet2.add("농구");
mySet2.add("야구");  // 중복 무시
mySet2.add("축구");
System.out.println("TreeSet : " + mySet2);  // [농구, 야구, 축구]

LinkedHashSet

LinkedHashSet삽입 순서를 보장하는 Set이다.
HashSet + LinkedList 구조로 입력 순서 유지

Set<String> linkedSet = new LinkedHashSet<>();
linkedSet.add("야구");
linkedSet.add("농구");
linkedSet.add("야구");  // 중복 무시
linkedSet.add("축구");
System.out.println("LinkedHashSet : " + linkedSet);  // [야구, 농구, 축구]
profile
Eazy하게

0개의 댓글