Java의 Set은 고유한 요소의 모음이며 중복을 허용하지 않습니다. Set은 HashSet, TreeSet 및 LinkedHashSet을 포함하여 Java의 여러 클래스에 의해 구현됩니다. Set 인터페이스의 일부 메서드는 다음과 같습니다.
- add(요소): 새 요소를 추가합니다.
- remove(element): 지정된 요소를 제거합니다.
- contains(element): 지정된 요소가 포함되어 있으면 true를 반환합니다.
- isEmpty(): Set이 비어 있으면 true를 반환합니다. 즉, 요소가 포함되어 있지 않습니다.
- size(): 요소 수를 반환합니다.
- iterator(): 요소를 반복하는 데 사용할 수 있는 Iterator를 반환합니다.
- clear(): Set에서 모든 요소를 제거합니다.
HashSet
HashSet 클래스는 Set 인터페이스의 구현이며 HashMap에 의해 지원됩니다. HashSet은 해당 요소를 HashMap에 저장하고 요소의 순서를 유지하지 않습니다. HashSet 클래스의 주요 기능은 다음과 같습니다.
- 중복을 허용하지 않습니다. 즉, 각 요소는 HashSet에 한 번만 나타날 수 있습니다.
- 정의된 순서가 없습니다. 즉, HashSet의 요소를 임의의 순서로 검색할 수 있습니다.
- 추가, 제거 및 포함의 기본 작업에 대해 일정한 시간 O(1) 평균 시간 복잡도를 제공합니다.
- 스레드로부터 안전하지 않습니다. 즉, 여러 스레드가 적절한 동기화 없이 동시에 HashSet에 액세스할 수 없습니다.
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
// Adding elements to the set
set.add("John");
set.add("Jane");
set.add("Jim");
// Checking if the set contains an element
System.out.println("Set contains Jane: " + set.contains("Jane"));
// Iterating over the elements in the set
for (String name : set) {
System.out.println(name);
}
}
}
// Output:
// Set contains Jane: true
// John
// Jane
// Jim
이 예제에서는 String 요소의 HashSet 집합을 만듭니다.
세트에 3개의 요소를 추가하고 contains() 메서드를 사용하여 세트에 "Jane" 요소가 포함되어 있는지 확인합니다.
마지막으로 for-each 루프를 사용하여 집합의 요소를 반복하고 이름을 출력합니다.
TreeSet
TreeSet 클래스는 Set 인터페이스의 구현이며 TreeMap에 의해 지원됩니다. TreeSet은 요소를 TreeMap에 저장하고 자연 순서 또는 Comparator에서 지정한 사용자 지정 순서를 기반으로 요소의 순서를 유지합니다. TreeSet 클래스의 주요 기능은 다음과 같습니다.
- 중복을 허용하지 않습니다. 즉, 각 요소는 TreeSet에 한 번만 나타날 수 있습니다.
- 요소의 순서를 유지하므로 TreeSet의 요소를 정렬된 순서로 검색할 수 있습니다.
- 추가, 제거 및 포함의 기본 작업에 대한 로그 시간 복잡도 O(log n)를 제공합니다.
- 스레드로부터 안전하지 않습니다. 즉, 적절한 동기화 없이 여러 스레드가 동시에 TreeSet에 액세스할 수 없습니다.
import java.util.TreeSet;
import java.util.Set;
public class TreeSetExample {
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
// Adding elements to the set
set.add("John");
set.add("Jane");
set.add("Jim");
// Checking if the set contains an element
System.out.println("Set contains Jane: " + set.contains("Jane"));
// Iterating over the elements in the set
for (String name : set) {
System.out.println(name);
}
}
}
// Output:
// Set contains Jane: true
// Jane
// Jim
// John
이 예제에서는 String 요소의 TreeSet 집합을 만듭니다.
세트에 3개의 요소를 추가하고 contains() 메서드를 사용하여 세트에 "Jane" 요소가 포함되어 있는지 확인합니다.
마지막으로 for-each 루프를 사용하여 집합의 요소를 반복하고 이름을 출력합니다.
TreeSet은 요소의 순서를 유지하므로 이름은 오름차순으로 출력됩니다.
LinkedHashSet
Java의 LinkedHashSet 클래스는 Set 인터페이스의 구현이며 LinkedHashMap에 의해 지원됩니다. LinkedHashSet은 해당 요소를 LinkedHashMap에 저장하고 요소가 세트에 삽입된 순서에 따라 요소의 순서를 유지합니다. LinkedHashSet 클래스의 주요 기능은 다음과 같습니다.
- 중복을 허용하지 않습니다. 즉, 각 요소는 LinkedHashSet에서 한 번만 나타날 수 있습니다.
- 요소의 순서를 유지합니다. 즉, LinkedHashSet의 요소는 세트에 삽입된 순서대로 검색할 수 있습니다.
- 추가, 제거 및 포함의 기본 작업에 대해 O(1) 시간 복잡도를 제공합니다.
- 스레드로부터 안전하지 않습니다. 즉, 적절한 동기화 없이 여러 스레드가 동시에 LinkedHashSet에 액세스할 수 없습니다.
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetExample {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
// Adding elements to the set
set.add("John");
set.add("Jane");
set.add("Jim");
// Checking if the set contains an element
System.out.println("Set contains Jane: " + set.contains("Jane"));
// Iterating over the elements in the set
for (String name : set) {
System.out.println(name);
}
}
}
// Output:
// Set contains Jane: true
// John
// Jane
// Jim
이 예제에서는 String 요소의 LinkedHashSet 을 생성합니다.
set에 3개의 요소를 추가하고 contains() 메서드를 사용하여 set에 "Jane" 요소가 포함되어 있는지 확인합니다.
마지막으로 for-each 루프를 사용하여 set의 요소를 반복하고 이름을 출력합니다.
LinkedHashSet은 요소의 순서를 유지하므로 이름은 세트에 삽입된 순서대로 출력됩니다.
https://chunstory.tistory.com/9
Java Collection(ArrayList, LinkedList, Vector)
Java에서 java.util.List 인터페이스는 Java Collection Framework의 일부이며 정렬된 요소 모음을 나타냅니다. 목록은 중복을 허용하고 조작할 수 있는 정의된 순서를 가집니다. 요소는 인덱스로 액세스할
chunstory.tistory.com
'프로그래밍 > Java' 카테고리의 다른 글
Java Stream(parallelStream) (0) | 2023.02.08 |
---|---|
Java Stream(map, filter, redute, sorted, collect) (0) | 2023.02.07 |
Java Collection(HashMap, TreeMap, LinkedHashMap) (0) | 2023.02.06 |
Java Collection(ArrayList, LinkedList, Vector) (0) | 2023.02.06 |
Java 비동기 프로그래밍 (0) | 2023.02.06 |