배열 기반
노드 기반
Vector(List) : 벡터는 동적으로 크기를 조정하는 배열에 구축되므로 ArrayList와 유사합니다. 그러나 Vector는 Thread safe하게 설계된 구조. 그렇기 때문에 싱글 스레드에서 오버헤드가 일어날 수 있다.
HashSet(Set) : HashSet은 hashing function를 사용하여 값을 해당 버킷에 매핑하는 해시 테이블에 구축됩니다. HashSet은 평균적으로 일정한 시간 복잡도로 빠른 삽입, 삭제 및 검색 작업을 제공합니다. 그러나 값의 순서는 유지하지 않습니다.
LinkedHashSet(Set) : LinkedHashSet은 해시 테이블과 LinkedList의 조합입니다. HashSet과 동일한 성능을 제공하지만 값의 삽입 순서를 유지합니다.
TreeSet(Set) : TreeSet은 균형 잡힌 이진 검색 트리(일반적으로 Red-Black 트리)를 기반으로 합니다. 삽입, 삭제 및 검색 작업을 위해 값의 정렬된 순서와 로그 시간 복잡도를 제공합니다.
PriorityQueue(Queue) : PriorityQueue는 일반적인 Queue처럼 FIFO이 아닌 우선순위를 지정해서 받는다. 삽입 및 제거 작업을 위해 우선 순위가 가장 높고 로그 시간 복잡도가 높은 값에 대한 빠른 액세스를 제공합니다.
ArrayDeque(Deque) : ArrayDeque는 동적으로 크기가 조정되는 배열을 기반으로 합니다. 양쪽 끝에서 빠른 삽입 및 제거 작업을 제공하며 LinkedList보다 메모리 효율적입니다.
HashMap(Map) : HashMap은 HashSet과 유사한 해시 테이블에 구축됩니다. 평균 일정 시간 복잡도로 key-value에 대한 빠른 삽입, 삭제 및 검색 작업을 제공합니다. 그러나 값의 순서는 유지하지 않습니다.
LinkedHashMap(Map) : LinkedHashMap은 LinkedHashSet과 유사한 HashTable과 LinkedList 조합입니다. HashMap과 동일한 성능을 제공하지만 키-값 쌍의 삽입 순서를 유지합니다.
TreeMap(Map) : TreeMap은 TreeSet과 유사한 균형 잡힌 이진 검색 트리로 구축 됩니다. key-value의 정렬된 순서와 삽입, 삭제 및 검색 작업을 위한 로그 시간 복잡도를 제공합니다.