Set

set은 linkedList와 달리 데이터의 중복을 허용하지않는다.
인덱스로 객체를 관리하지 않으므로 데이터를 검색할때는 iterator() 메서드로 iterator(반복자)를 생성하고 데이터를 가져와야한다.

Set의 종류

HashSet

대표적인 set 컬렉션 구현 클래스.
중복 데이터 저장 X
순서 보장 X

    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();

        set.add("안");
        set.add("녕");
        set.add("하");
        set.add("세");
        set.add("요");
        set.add("99");
        set.add("2");
        set.add("-1");
        //한번더 넣으면? 중복을 허용하지않으므로 들어가지않는다!
        set.add("안");
        set.add("녕");
        set.add("하");
        set.add("세");
        set.add("요");
        set.add("99");
        set.add("2");
        set.add("-1");


        Iterator<String> itr = set.iterator();
        while(itr.hasNext()) {
            System.out.println(itr.next());
        }
    }

image.png
->중복을 허용하지않고 순서도 뒤죽박죽이다.

TreeSet

Hashset과 같이 중복데이터 저장 X
순서 보장 X

단, 오름차순으로 데이터를 정렬한다.

 public static void main(String[] args) {
        TreeSet<String> set = new TreeSet<>();

        set.add("안");
        set.add("녕");
        set.add("하");
        set.add("세");
        set.add("요");
        set.add("3");
        set.add("2");
        set.add("1");

        Iterator<String> itr = set.iterator();
        while(itr.hasNext()) {
            System.out.println(itr.next());
        }
    }

image.png
->숫자와 글자가 오름차순으로 저장됨.

LinkedHashSet

중복데이터 저장 X
단, 입력된 순서대로 데이터를 관리한다.

 public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();

        set.add("안");
        set.add("녕");
        set.add("하");
        set.add("세");
        set.add("요");
        set.add("3");
        set.add("2");
        set.add("1");

        Iterator<String> itr = set.iterator();
        while(itr.hasNext()) {
            System.out.println(itr.next());
        }
    }

image.png

->데이터가 들어온 순서대로 저장되었다.