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 인터페이스를 구현해야 한다. 이 부분은 뒤에서 설명한다.