만석이 2024. 2. 6. 18:19
Set은 객체의 순서를 저장하지않는다. index가 없기 때문이다.
또한 중복을 허용하지않으므로 중복된값을 저장할수없다.
또한 값의 정렬을 해준다.

 

 

바로 예제를 보자


import java.util.HashSet;
import java.util.Set;

public class Set_1 {

private Set<String> stringSet;

public Set_1() {
this.stringSet= new HashSet<>();

}

public void add_Set(String value) {
stringSet.add(value);
}

public void print () {
System.out.println("Set의 목록"+stringSet);
}

public static void main(String[] args) {
Set_1 set = new Set_1();


set.add_Set("하나");
set.add_Set("셋");
set.add_Set("둘");

set.print();

}
}

Set의 목록[둘, 하나, 셋]
private Set<String> stringSet; 
Set의 구현체에 사용될 객체를 만들어주었다.

생성자안에는 Hash라는 구현체를 사용해주었다.

즉 쉽게말하면 set은 그냥 변수하나로 만들주있는것 이아니라
객체하나와 구현체가 필요한것이다.
Set 구현체는 HashSet 외에도 LinkedHashSet과 TreeSet 있다

그 뒤로는 List와 동일하다.

add로 값을 넣어주고 main에서 넣은 값들을 저장해주었다.


여기서 주의해서 볼것이있다.

List는 값을 Index를 사용해서 해당위치에 값을 넣어주고 
값을 꺼내올때도 위치로 값을 불러냈다.

하지만 

Set은 Index를 사용하지않는다. 그래서 값이 랜덤한 위치에
저장이 되어있다.

 

 

다른 예시를 보자

import java.util.HashSet;
import java.util.Set;

public class Set_2 {
    private Set<Integer> numberSet;

    public Set_2() {
        this.numberSet = new HashSet<>();
    }

    public void addNumber(int number) {
        numberSet.add(number);
    }

    public void printSet() {
        System.out.println("HashSet의 내용: " + numberSet);
    }
}

    public static void main(String[] args) {
        Set_2 example = new Set_2();

        // 값 추가
        example.addNumber(5);
        example.addNumber(2);
        example.addNumber(8);
        example.addNumber(3);
        example.addNumber(7);

        // 중복된 값 추가 (이미 5가 있으므로 무시됨)
        example.addNumber(5);

        // 출력
        example.printSet();
   }

HashSet의 내용: [2, 3, 5, 7, 8]
이번에는 Set안에 정수만 들어갈수있게 만들었다.

결과는 당연하게도 랜덤으로 값이 나오게된다.