Java

Set

dev-rootable 2024. 5. 11. 16:59

 

📌 Set 인터페이스

 

중복되는 원소를 허용하지 않고, 저장 순서를 유지하지 않는 집합

 

순서 자체가 없으므로 Index로 객체를 검색해서 가져오는 get(index) 메서드가 존재하지 않으며, 중복 저장이 불가능하므로 null 값도 하나만 저장할 수 있다.

 

🔍 Methods

 

출처:  https://st-lab.tistory.com/238

 

📖 종류

 

✅ HashSet

 

 

Hash 기능과 Set 컬렉션이 합쳐진 자료구조

 

배열과 연결 노드를 결합한 자료구조 형태로 Hash에 의해 데이터의 위치를 특정시켜 데이터를 빠르게 검색할 수 있다. 그래서 가장 빠른 임의 검색 속도를 가졌고, 추가/삭제/검색/접근성이 모두 뛰어나다. 마찬가지로 저장 순서가 없고 중복을 허용하지 않는다.

 

ex) 중복 닉네임 검사

 

✅ LinkedHashSet

 

순서를 가지는 Set

 

Link + Hash + Set이 결합된 형태로 LinkedList 형태는 순차 검색을 하기 때문에 요소를 차례대로 출력하면 입력했던
순서대로 출력된다. 즉, 중복을 허용하지 않으면서 순서를 보장받고 싶은 경우에 주로 사용된다.

 

ex) LRU 알고리즘

캐시에 이미 저장된 페이지를 다시 적재하지 않고 새로운 페이지를 할당하기 위해 가장 오래된 캐시를 비우고자 하는 경우에 사용한다. 이 알고리즘은 저장된 순서를 알아야 가장 오래된 데이터를 비울 수 있어 사용하기에 적합하다.
(실제로는 LinkedHashMap을 대부분 사용한다.)

 

✅ TreeSet

 

데이터의 가중치에 따라 순서대로 정렬할 수 있는 Set

 

  • 이진 검색 트리(binary search tree) 형태로 데이터를 저장
  • 중복을 허용하지 않고 순서를 가지지 않는다.
  • 데이터가 정렬된 형태로 있어 특정 구간의 집합 요소들을 탐색할 때 매우 유용하다.
  • 트리는 데이터를 순차적으로 저장하는 것이 아니라 저장 위치를 찾아서 저장하기 때문에 삭제하는 경우 트리를 재구성해야 한다. 따라서 데이터의 추가/삭제 시간은 연결 리스트보다 더 걸린다.
  • 배열이나 연결 리스트에 비해 검색과 정렬 기능이 더 뛰어나다.

 

References:

 

https://inpa.tistory.com/entry/JCF-%F0%9F%A7%B1-Collections-Framework-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC#linkedlist_%ED%81%B4%EB%9E%98%EC%8A%A4-1

 

🧱 Java Collections Framework 종류 💯 총정리

Java Collection Framework 자바 새내기분들은 컬렉션 프레임워크라는 단어에 뭔가 거창하고 어려운 느낌이 들수 있겠지만, 그냥 자료 구조(Data Structure) 종류의 형태들을 자바 클래스로 구현한 모음집

inpa.tistory.com

 

https://st-lab.tistory.com/238

 

자바 [JAVA] - Set Interface (셋 인터페이스)

•자료구조 관련 목록 링크 펼치기 더보기 0. 자바 컬렉션 프레임워크 (Java Collections Framework) 1. 리스트 인터페이스 (List Interface) 2. 어레이리스트 (ArrayList) 3. 단일 연결리스트 (Singly LinkedList) 4. 이

st-lab.tistory.com