본문 바로가기

[TIL] 컬렉션 - java.util.Set<E> 인터페이스 & 구현 클래스

인포꿀팁 발행일 : 2020-09-07

Set<E> 인터페이스의 특징

  • 순서를 유지하지 않는 데이터의 집합
  • 중복 허용 X
  • 하나의 NULL만 저장 가능
  • 주요 구현 클래스 : HashSet, LinkedHashSet, TreeSet
  • Set 인터페이스와 구현 클래스 계층도

 

Hashset 

  • 저장 순서 X
  • 중복 허용 X
  • 멀티 쓰레드 환경 동기화X
  • 하나의 NULL값 저장
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package ex0813;
 
import java.util.HashSet;
import java.util.Set;
 
public class Collection_Hashset_Ex1 {
    public static void main(String[] args) {
        //중복 x 순서x
        Set<String> set = new HashSet<>();
        set.add("버즈");
        set.add("겁쟁이");
        set.add("쌈자");
        set.add("가시");
        set.add("모노로그");
        set.add("은인");
        set.add("여행");
        set.add("일기");
        set.add("나무");
        set.add("민경훈");
        set.add("리즈");
        set.add("와우");
        
        set.add("와우"); // 중복을 허용하지 않으므로 기존것을 덮어버린다.
        
        
        System.out.println(set);
        
        System.out.println("전체 출력 ..");
        for(String s : set) {
            System.out.print(s+"  ");
        }
        System.out.println();
    }
}
/*
[쌈자, 은인, 민경훈, 버즈, 겁쟁이, 여행, 모노로그, 와우, 가시, 나무, 리즈, 일기]
전체 출력 ..
쌈자  은인  민경훈  버즈  겁쟁이  여행  모노로그  와우  가시  나무  리즈  일기  

*/
cs

 

TreeSet

SortedSet 인터페이스를 구현한 클래스

정렬된 순서로 반복(오름차순)

중복 허용x

멀티 쓰레드 환경 동기화x

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package ex0813;
 
import java.util.Set;
import java.util.TreeSet;
 
public class Collection_LinkedHashSet_Ex2 {
    public static void main(String[] args) {
        //중복 x 오름차순 정렬
        Set<String> set = new TreeSet<>();
        set.add("버즈");
        set.add("겁쟁이");
        set.add("쌈자");
        set.add("가시");
        set.add("모노로그");
        set.add("은인");
        set.add("여행");
        set.add("일기");
        set.add("나무");
        set.add("민경훈");
        set.add("리즈");
        set.add("와우");
        
        set.add("와우"); // 중복을 허용하지 않으므로 기존것을 덮어버린다.
        
        
        
        System.out.println(set);
        
        System.out.println("전체 출력 ..");
        for(String s : set) {
            System.out.print(s+"  ");
        }
        System.out.println();
    }
}
/* 출력 값
[가시, 겁쟁이, 나무, 리즈, 모노로그, 민경훈, 버즈, 쌈자, 여행, 와우, 은인, 일기]
전체 출력 ..
가시  겁쟁이  나무  리즈  모노로그  민경훈  버즈  쌈자  여행  와우  은인  일기  
*/
cs

 

LinkedHashSet

  • HashSet 하위 클래스
  • hash table과 linked list를 구현한 set
  • 삽입되는 순서대로 저장
  • 중복 허용x
  • 멀티 쓰레드 환경 동기화 x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package ex0813;
 
import java.util.LinkedHashSet;
import java.util.Set;
 
public class Collection_TreeSet_Ex3 {
    public static void main(String[] args) {
        //중복 x 순서0 : 등록 순서대로
        Set<String> set = new LinkedHashSet<>();
        set.add("버즈");
        set.add("겁쟁이");
        set.add("쌈자");
        set.add("가시");
        set.add("모노로그");
        set.add("은인");
        set.add("여행");
        set.add("일기");
        set.add("나무");
        set.add("민경훈");
        set.add("리즈");
        set.add("와우");
        
        set.add("와우"); // 중복을 허용하지 않으므로 기존것을 덮어버린다.
        
        
        System.out.println(set);
        
        System.out.println("전체 출력 ..");
        for(String s : set) {
            System.out.print(s+"  ");
        }
        System.out.println();
    }
}
 
/*
 [버즈, 겁쟁이, 쌈자, 가시, 모노로그, 은인, 여행, 일기, 나무, 민경훈, 리즈, 와우]
전체 출력 ..
버즈  겁쟁이  쌈자  가시  모노로그  은인  여행  일기  나무  민경훈  리즈  와우  
 
 */
 
cs

 

댓글