반응형
Set
Set은 중복된 요소를 포함할 수 없다. List와는 다르게 인덱스를 사용하지않아서 인덱스 매개변수가 없다.
Set을 구현한 클래스목록
-
HashSet (순서가 필요없는 데이터를 hash table에 저장. Set 중에 가장 성능이 좋음)
-
Linked HashSet (저장된 데이터의 값에 따라 정렬됨. red-black tree 타입으로 값이 저장. HashSet보다 성능이 느림)
-
TreeSet (연결된 목록 타입으로 구현된 hash table에 데이터 저장. 저장된 순서에 따라 값이 정렬. 셋 중 가장 느림)
성능 차이가 나는 이유는 데이터 정렬 때문이다.
HashSet
public class TestHashSet {
public static void main(String[] ar) {
HashSet h1 = new HashSet();
HashSet h2 = new HashSet();
h1.add("박정환");
h1.add("김동현");
System.out.println(h1.add("김희수")); // true
System.out.println(h1.add("김희수")); // false
// for 문 이용한 요소 조회
for (String e : h1) {
System.out.print(e + " "); // 박정환 김희수 김동현
}
h2.add("박정환");
h2.add("김동현");
h2.add("김희수");
// iterator() 메서드를 이용한 요소 조회
Iterator iter = h2.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); // 박정환 김희수 김동현
}
// size() 메서드를 이용한 개수 조회
System.out.println("크기 : "+ h2.size()); // 3
}
}
요소의 저장 순서를 바꿔도 저장되는 순서에는 영향을 미치지 않는 것을 확인할 수 있다.
LinkedHashSet
중복된 데이터를 저장할 수 없다. 차이점은 입력된 순서대로 데이터를 관리한다.
public class TestLinkedHashSet {
public static void main(String[] ar) {
Set h1 = new LinkedHashSet();
Set h2 = new LinkedHashSet();
h1.add("박정환");
h1.add("김동현");
System.out.println(h1.add("김희수")); // true
System.out.println(h1.add("김희수")); // false
// for 문 이용한 요소 조회
for (String e : h1) {
System.out.print(e + " "); // 박정환 김동현 김희수
}
h2.add("박정환");
h2.add("김동현");
h2.add("김희수");
// iterator() 메서드를 이용한 요소 조회
Iterator iter = h2.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); // 박정환 김동현 김희수
}
// size() 메서드를 이용한 개수 조회
System.out.println("크기 : "+ h2.size()); // 3
}
}
입력한 순서대로 값이 출력되는것을 확인할 수 있다..
TreeSet
데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary search tree)의 형태로 요소를 저장한다. (기본적으로 오름차순)
public class TestTreeSet {
public static void main(String[] ar) {
TreeSet ts = new TreeSet();
ts.add(30);
ts.add(40);
ts.add(20);
ts.add(10);
// for 을 이용한 요소 조회
for (Integer e : ts) {
System.out.print(e + " "); // 10 20 30 40
}
ts.remove(40);
Iterator iter = ts.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); // 10 20 30
}
System.out.println("크기 : " + ts.size()); // 3
// subSet() 메소드를 이용한 부분 집합의 출력
System.out.println(ts.subSet(10, 20));
System.out.println(ts.subSet(10, true, 20, true));
}
}
저장된 요소들이 모두 정렬된 상태로 출력되는것을 확인할 수 있다..
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
| java Collection - Queue 정리 (0) | 2020.03.10 |
|---|---|
| java Collection - List 정리 (0) | 2020.03.10 |
| java 연산자 ==, equals(), hashCode() 정리 (0) | 2020.03.10 |
| java 컬렉션 프레임워크(Collection Framework) (0) | 2020.03.10 |
| java 기초 문법 정리 (0) | 2018.05.10 |