ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Set 컬렉션 클래스
    프로그래밍/JAVA 2022. 8. 9. 22:17
    728x90

     

     

    set 컬렉션 클래스는 순서가 없는 데이터들의 집합으로 데이터의 중복을 허용하지않는 특징을 가지고 있다.

     

    대표적인 set 컬렉션 클래스는 HashSet, TreeSet가 있고 하나씩 알아보자.

     


    HashSet <E> 클래스

    JDK 1.2부터 제공하여 해시 알고리즘을 사용하여 검색 속도면에서 굉장한 장점을 보인다.

    데이터를 중복해서 저장할 수 없으며 저장 순서가 유지되지않는다. 

    만일 데이터에 중복된 값을 저장하려하면 자동으로 제거한다. 

     

    중복 제거 과정

    1. hashcode()를 이용하여 저장되어 있는 객체들의 해시 코드 값을 비교
    2. equals()로 두 객체를 비교해서 true 가 나오면 동일한 객체로 판단

     

    HashSet<타입> 참조변수 = new HashSet();
    
    add() : 요소를 추가
    size() : 요소의 개수를 반환
    public static void main(String[] args) {
        HashSet<String> hashSet1 = new HashSet<>();
        HashSet<String> hashSet2 = new HashSet<>();
      
        hashSet1.add("김사과");
        hashSet1.add("반하나");
        hashSet1.add("오렌지");
        System.out.println(hashSet1); // [반하나, 김사과, 오렌지]
        hashSet1.add("김사과");
        System.out.println(hashSet1); // [반하나, 김사과, 오렌지]
      
        for (String s : hashSet1){
            System.out.print(s + " "); // 반하나 김사과 오렌지
        }
        System.out.println("");
        System.out.println("요소의 개수 : " + hashSet1.size()); // 3
      
        hashSet2.add("김사과");
        hashSet2.add("반하나");
        hashSet2.add("오렌지");
        System.out.println(hashSet2); // [반하나, 김사과, 오렌지]
      
        // 탐색
        Iterator<String> iterator = hashSet2.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next() + " ");  // 반하나 김사과 오렌지
        }
        System.out.println("");
      
    }

     


    TreeSet <E> 클래스

    JDK 1.2부터 제공되어 이진 탐색 트리 구조로 이루어져 요소를 저장한다. 데이터를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다. 

     

    이진 탐색 트리 : 추가와 삭제에는 시간이 걸리지만 정렬, 검색에 높은 성능을 자랑라는 자료구조

     

    public static void main(String[] args) {
            TreeSet<Integer> treeSet = new TreeSet<>();
            treeSet.add(10);
            treeSet.add(8);
            treeSet.add(20);
            treeSet.add(35);
            treeSet.add(21);
            treeSet.add(4);
            System.out.println(treeSet); // [4, 8, 10, 20, 21, 35]
            treeSet.remove(20);
            System.out.println(treeSet); // [4, 8, 10, 21, 35]
            System.out.println(treeSet.size()); // 5 : 요소 개수
            System.out.println(treeSet.first()); // 4 : 첫번째 데이터
            System.out.println(treeSet.last()); // 35 : 마지막 데이터
            System.out.println(treeSet.higher(21)); // 35 : 21 다음 데이터
            System.out.println(treeSet.lower(21)); // 10 : 21 이전 데이터
    
            for(int i : treeSet){
                System.out.print(i + " "); //4 8 10 21 35
            }
            System.out.println();
    }

     

     

     

     

     

    728x90

    댓글

Designed by Tistory.