-
[Java]SetAlgorithm/자료구조 for Algorithm 2022. 3. 22. 00:52
Set
- Set은 내부 데이터를 중복해서 저장할 수 없고, 저장된 객체에 순서가 없다.
- 따라서 Set은 List와 같이 인덱스를 사용하여 원소에 바로 접근할 수 없다.
HashSet
- Java는 내부적으로 Set 인터페이스를 따로 정의해 두었다. 이곳에 다양한 Set 구현체를 활용하여 코드를 작성할 수 있는데, HashSet은 기본적인 Set의 특성을 그대로 반영한 클래스이다.
Set<Integer> set = new HashSet<>(); set.add(5); set.add(5); set.add(1); set.add(1); set.add(3); System.out.println(set);
- 다음과 같이 중복된 자료를 저장하더라도 중복되지 않게 저장되는 것을 확인할 수 있다.
TreeSet
- Set은 TreeSet을 사용하여 내부적으로 정렬된 상태를 유지하도록 할 수 있다.
TreeSet<Integer> set = new TreeSet<>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // Set을 내림차순으로 정렬하는 기준 설정 return Integer.compare(o2, o1); } }); set.add(5); set.add(5); set.add(1); set.add(1); set.add(3); System.out.println(set.pollFirst()); System.out.println(set.pollLast()); System.out.println(set);
- 또 코드와 같이 Deque의 특성을 가지고 있어, 앞뒤로 꺼내는 연산이 가능하다.
LinkedHashSet
- Set은 삽입 순서를 보장하지 않는다. 하지만 LinkedHashSet은 연결리스트 형태로 구현이 되어 있기 때문에 삽입 순서를 보장하는 특징이 있다.
LinkedHashSet<Integer> set = new LinkedHashSet<>(); set.add(5); set.add(5); set.add(1); set.add(1); set.add(3); set.add(7); set.add(-1); System.out.println(set);
'Algorithm > 자료구조 for Algorithm' 카테고리의 다른 글
[Java]우선순위큐(PriorityQueue) (0) 2022.03.22 [Java]서로소 집합(Disjoint Set)(Union-Find)(Merge-Find Set) (0) 2021.04.15 [Java]덱(Deque) (0) 2021.02.18 [Java]해시맵(HashMap) (0) 2021.02.13 [Java]큐(Queue) (0) 2020.09.25