728x90
수학에서의 Set은 집합을 의미하는데 집합은 일반적으로 중복을 허용하지 않는다.
자바 컬렉션에서의 Set은 수학에서의 집합과 유사하다.
Set
- 중복을 허용하지 않는다
- 저장 순서를 유지하지 않는다
Set 인터페이스에 정의된 메서드들은 다음과 같습니다.
기능 | 리턴 타입 | 메서드 | 설명 |
객체 추가 | boolean | add(Object o) | 주어진 객체를 추가하고, 성공하면 true를, 중복 객체면 false를 반환합니다. |
객체 검색 | boolean | contains(Object o) | 주어진 객체가 Set에 존재하는지 확인합니다. |
boolean | isEmpty() | Set이 비어있는지 확인합니다. | |
Iterator | Iterator() | 저장된 객체를 하나씩 읽어오는 반복자를 리턴합니다. | |
int | size() | 저장되어 있는 전체 객체의 수를 리턴합니다. | |
객체 삭제 | void | clear() | Set에 저장되어져 있는 모든 객체를 삭제합니다. |
boolean | remove(Object o) | 주어진 객체를 삭제합니다. |
HashSet
Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스
- 중복을 허용하지 않는다
- 저장 순서를 유지하지 않는다
import java.util.*;
public class Main {
public static void main(String[] args) {
// HashSet 생성
HashSet<String> languages = new HashSet<String>();
// HashSet에 객체 추가
languages.add("Java");
languages.add("Python");
languages.add("Javascript");
languages.add("C++");
languages.add("Kotlin");
languages.add("Ruby");
languages.add("Java"); // 중복
// 반복자 생성하여 it에 할당
Iterator it = languages.iterator();
// 반복자를 통해 HashSet을 순회하며 각 요소들을 출력
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
TreeSet
- 이진 탐색 트리 형태로 데이터를 저장 -> 정렬과 검색에 특화된 자료 구조
- 중복 저장을 허용하지 않는다
- 저장 순서를 유지하지 않는다
- 자동으로 오름차순으로 정렬
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
// TreeSet 생성
TreeSet<String> workers = new TreeSet<>();
// TreeSet에 요소 추가
workers.add("Lee Java");
workers.add("Park Hacker");
workers.add("Kim Coding");
System.out.println(workers);
System.out.println(workers.first());
System.out.println(workers.last());
System.out.println(workers.higher("Lee"));
System.out.println(workers.subSet("Kim", "Park"));
}
}
728x90
'개발일지 > Java' 카테고리의 다른 글
Java 애너테이션 (Annotation) (0) | 2022.09.19 |
---|---|
Java Map<key, value>, HashMap (0) | 2022.09.17 |
Java Iterator (0) | 2022.09.17 |
Java List<E>, ArrayList, LinkedList (1) | 2022.09.14 |
Java 컬렉션 프레임워크 (Collection Framework) (0) | 2022.09.14 |