본문 바로가기
✨ Java/컬렉션 프레임워크(CollectionFramework)

자바(JAVA) - 컬렉션프레임워크 Set

by 환풍 2023. 2. 15.
728x90
반응형

List : 데이터의 순번이 존재하고, 중복이 가능하다.

Set : 데이터의 순번이 없고, 중복이 불가하다.

 

Set은 List와 다르게 중복이 불가능하여 잘 사용하지 않는다.

하지만 유용한 기능도 있어 알아두고 사용할 곳이있다면 좋을 것 같다.

 

Set에는 HashSet과 TreeSet이 있다. 요약하자면

- Set이란 순서가 없는 집합체이며, 중복을 허용하지 않는다.

- TreeSet은 HashSet과 다르게 그 값이 정렬되어 저장이 되지만, 그렇기 때문에 HashSet보다 속도가 느리다.

 

1
2
3
4
5
6
        HashSet<String> set1 = new HashSet<>(); // List와 다르게 중복 불가.
        Set<String> set3 = new HashSet<>();
 
        // 오름 차순 정렬  -> 트리셋은 오름차순 기억하기.
        TreeSet<String> set2 = new TreeSet<>();
        Set<String> set4 = new TreeSet<>();
cs

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
package set;
 
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
 
public class Set02 {
    public static void main(String[] args) {
        // Set 객체 생성
        Set<String> set = new HashSet<>();
 
        //데이터 삽입
        set.add("java");
        set.add("C++");
        set.add("python");
        set.add("python");  // 중복이라 하나만 출력된다.  그리고 순서도 상관없음.
 
        //set은 인덱스가 없어서 for문 못쓴다.  단, for each는 가능하다고 한다..
        for(String e : set)
        {
            System.out.println(e);
        }
 
        System.out.println();
 
        Set<String> set2 = new TreeSet<>(); // 중복제거 그리고 오름차순.
        set2.add("김자바");
        set2.add("최자바");
        set2.add("박자바");
        set2.add("윤자바");
        set2.add("윤자바");
 
        for(String e : set2)
        {
            System.out.println(e);
        }
    }
}
 
cs

데이터를 삽입후 foreach문을 돌려 데이터를 출력해보았다.

중복이 불가능하기 때문에 데이터 삽입 과정에서 받아온 python 두개는 하나만 출력되고, 오름차순으로 정렬된다.

따라서 첫번쨰 foreach를 돌리면 c++ python java만 실행될 것이다.

 

두번째 set2에도 각각 데이터를 집어넣고, 중복되는지 오름차순이 되는지 검사해보았다.

그 결과 set과 같은 형태로 출력이 된걸 확인해볼 수 있다.

728x90
반응형

댓글