ArrayList 또는 LinkedList는 데이터 간의 순서가 존재한다. 하지만 순서는 상관없이 데이터를 저장하고 싶을 때 set(집합)을 사용한다.
set의 종류
- HashSet - 해시 테이블에 원소 저장하기 때문에 성능이 가장 우수, 하지만 원소의 순서가 일정하지 않은 단점이 존재.
- TreeSet - 레드-블랙 트리 에 원소를 저장. 값에 따라 순서가 결정되지만 HashSet보다는 느리다.
- LinkedHashSet - 해시 테이블가 연결 리스트를 결합한 것으로 원소들의 순서가 삽입되었던 순서와 같다. 이 방법은 HashSet의 문제를 비용을 들여서 순서의 불명확성을 제거한 방법이다.
1. HashSet
package ex13;
import java.util.HashSet;
public class Set01 {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("milk");
set.add("bread");
set.add("butter");
set.add("cheese");
set.add("ham");
set.add("ham");
System.out.println(set);
if (set.contains("ham")) {
System.out.println("ham 중복");
}
}
}

2. TreeSet
package ex13;
import java.util.TreeSet;
public class Set02 {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<String>();
set.add("milk");
set.add("bread");
set.add("butter");
set.add("cheese");
set.add("ham");
set.add("ham");
System.out.println(set);
if (set.contains("ham")) {
System.out.println("ham 중복");
}
}
}

3. LinkedHash
package ex13;
import java.util.LinkedHashSet;
public class Set03 {
public static void main(String[] args) {
LinkedHashSet<String> set = new LinkedHashSet<String>();
set.add("milk");
set.add("bread");
set.add("butter");
set.add("cheese");
set.add("ham");
set.add("ham");
System.out.println(set);
if (set.contains("ham")) {
System.out.println("ham 중복");
}
}
}

Share article