-
Set : 중복 값을 삽입할 수 없고, 특정한 순서를 가지고 있지 않다는 특징이 있다.
HashSet : Set 인터페이스의 구현 클래스다. 순서가 유지되지 않고 넣은 값의 hashcode에 따라 순서가 나온다.
LinkedHashSet : 중복을 허용하지 않지만 add 한 순서대로 값이 저장된다.
TreeSet : 오름차순으로 값을 정렬해 가지고 있으며, 다른 set보다 대량의 데이터 검색 시 빠르다.
import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.NavigableSet; import java.util.Set; import java.util.TreeSet; public class SetTest { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); set.add(1); set.add(2); set.add(2); set.add(3); System.out.println(set); Iterator<Integer> ite = set.iterator(); while(ite.hasNext()) { System.out.print(ite.next() + " "); } System.out.println(); System.out.println(); LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add(3); linkedHashSet.add(1); linkedHashSet.add(7); System.out.println(linkedHashSet); System.out.println(); TreeSet<Integer> treeset = new TreeSet<>(); treeset.add(4); treeset.add(1); treeset.add(8); treeset.add(2); System.out.println(treeset); NavigableSet<Integer> se = treeset.descendingSet(); System.out.println(se); TreeSet<Integer> treeset2 = new TreeSet<>(Collections.reverseOrder()); treeset2.add(4); treeset2.add(1); treeset2.add(8); treeset2.add(2); System.out.println(treeset2); } }
실행 결과
set은 get 메 서드가 따로 없어서 데이터를 가져와서 사용하거나 할 경우 Iterator를 사용해 주어야 한다.
Iterator<Integer> ite = set.iterator();
while(ite.hasNext()){ }를 사용하게 되면 값이 있으면 true를 반환해 주어 반복문을 돌릴 수 있고,
ite.next() 메서드를 사용해 값을 가져올 수 있다
특이한 점이 그냥 값을 가져오는 줄 알았는데 값을 사용하고 나면 해당 값이 삭제된다... 신기
TreeSet은 기본 오름차순 정렬인데 내림차순으로 한번 해보려고 여러 검색을 해보았는데,
NavigableSet<Integer> se = treeset.descendingSet(); 이런 식으로 NavigableSet<Integer>을
통해서도 가능하며 애초에 선언문에서 선언을 해줄 때 내림차순 선언을 해주는 방법도 있다.
TreeSet<Integer> treeset2 = new TreeSet<>(Collections.reverseOrder());
TreeSet<Integer> treeset2 = new TreeSet<>((a, b) -> b-a);
2가지 방법이 있는데 람다식보다 reverseOrder()가 속도가 더 빠르다고 어디서 본 적이 있다.
728x90'공부 > JAVA' 카테고리의 다른 글
List, ArrayList, LinkedList 사용법 & 간단 사용 예제 (0) 2021.10.30 HashMap, TreeMap 사용법 & 간단 사용 예제 (0) 2021.10.30 Comparable, Comparator 사용하기 JAVA (0) 2021.10.30 순열 조합 주사위 테스트 JAVA (0) 2021.10.30 스택, 큐 사용하기 JAVA (0) 2021.10.30 댓글