Set - 자바가 제공하는 Set3 - 예제

2024. 6. 14. 15:17카테고리 없음

HashSet, LinkedHashSet, TreeSet에서 학습한 내용을 코드로 확인해보자.

package collection.set.javaset;

import java.util.*;

public class JavaSetMain {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        TreeSet<String> treeSet = new TreeSet<>();

        run(new HashSet<>());
        run(new LinkedHashSet<>());
        run(new TreeSet<>());
    }

    private static void run(Set<String> set){
        System.out.println("set = " + set.getClass());
        set.add("C");
        set.add("B");
        set.add("A");
        set.add("1");
        set.add("2");
        Iterator<String> iterator = set.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next() + " ");
        }
        System.out.println();
    }
}
  • HashSet, LinkedHashSet, TreeSet 모두 Set 인터페이스를 구현하기 때문에 구현체를 변경하면서 실행할 수 있다.
  • iterator() 를 호출하면 컬렉션을 반복해서 출력할 수 있다.
    • iterator.hasNext() : 다음 데이터가 있는지 확인한다.
    • iterator.next() : 다음 데이터를 반환한다.

 

 

실행 결과

set = class java.util.HashSet
A 1 B 2 C 
set = class java.util.LinkedHashSet
C B A 1 2 
set = class java.util.TreeSet
1 2 A B C
  • HashSet : 입력한 순서를 보장하지 않는다.
  • LinkedHashSet : 입력한 순서를 정확히 보장한다.
  • TreeSet : 데이터를 값을 기준으로 정렬한다.

 

참고 - TreeSet 의 정렬 기준

TreeSet을 사용할 때 데이터를 정렬하려면 크다, 작다라는 기준이 필요하다. 1,2,3 이나 "A","B","C" 같은 기본 데이터는 크다 작다라는 기준이 명확하기 때문에 정렬할 수 있다. 하지만 우리가 직접 만든 Member와 같은 객체는 크다 작다는 기준을 어떻게 알 수 있을까? 이런 기준을 제공하려면 Comparable, Comparator 인터페이스를 구현해야 한다. 이 부분은 뒤에서 설명한다.