
Vector, Stack, Hashtable은 Java 초창기에 만들어져서 하위 버전 호환을 위해 남겨진 Legacy Class들입니다.ArrayList, LinkedListPriorityQueue, ArrayDeque, LinkedListArrayDeque, LinkedListHashSet, LinkedHashSet, TreeSetHashMap, LinkedHashMap, TreeMap키-값 쌍을 기반으로 데이터를 관리하며, 키(Key)를 기준으로 중복을 허용하지 않고 값을 저장할 수 있는 유용한 자료구조입니다. Collection과 Map Framework는 자료구조의 구현과 관련된 복잡한 내부 동작을 추상화하여, 개발자가 데이터 처리 로직에 집중할 수 있도록 도와줍니다.ArrayList와 같은 클래스는 배열 기반의 데이터 관리를 효율적으로 수행하지만, 개발자가 직접 배열의 크기를 관리하거나 요소를 삽입/삭제하는 것에 신경 쓸 필요가 없습니다. LinkedList, HashSet, TreeSet 등의 다양한 자료구조도 마찬가지로, 개발자는 데이터가 어떻게 저장되고 관리되는지보다 어떤 방식으로 데이터를 처리할 것인지에 집중할 수 있습니다.List, Set, Queue 등의 자료구조는 각각의 고유한 특성과 사용처를 가지고 있습니다.List는 순서를 보장하면서 데이터를 저장하고, Set은 중복을 허용하지 않는 데이터 집합을 처리하며, Queue는 FIFO(First In, First Out) 방식으로 데이터를 관리합니다.HashSet과 TreeSet은 모두 중복을 허용하지 않는 Set 구현체이지만, HashSet은 해시 테이블을 이용해 빠른 탐색 성능을 제공하는 반면, TreeSet은 이진 트리를 이용해 요소를 정렬된 순서로 저장합니다.Map 역시 HashMap과 TreeMap처럼, 각각 해시 테이블 기반의 빠른 탐색을 제공하거나 이진 트리를 이용한 정렬된 키 값을 제공합니다.Collection Interface는 List, Set, Queue와 같은 여러 데이터 구조의 공통적인 동작을 정의하는 최상위 인터페이스입니다. Collection은 데이터를 하나의 그룹으로 관리하기 위한 기본 틀을 제공합니다. Collection 인터페이스를 상속받은 모든 구현체는 공통된 메서드 집합을 가지고 있어, 개발자는 자료구조의 구체적인 구현 방식에 상관없이 데이터를 처리할 수 있습니다.add(E e): 컬렉션에 요소를 추가합니다.remove(Object o): 특정 요소를 컬렉션에서 제거합니다.size(): 컬렉션의 크기를 반환합니다.isEmpty(): 컬렉션이 비어 있는지 확인합니다.contains(Object o): 컬렉션이 특정 요소를 포함하는지 확인합니다.iterator(): 컬렉션의 요소를 순회할 수 있는 Iterator를 반환합니다. (Iterable을 상속 받았기 때문에 사용가능한 메서드입니다.)List: 순서를 유지하면서 중복된 요소를 허용하는 자료구조입니다. ArrayList, LinkedList 등이 있습니다.Set: 중복된 요소를 허용하지 않는 집합을 관리합니다. HashSet, TreeSet 등이 대표적인 구현체입니다.Queue: FIFO(First In, First Out) 방식을 따르는 자료구조로, 주로 대기열을 구현할 때 사용됩니다. PriorityQueue, ArrayDeque 등이 있습니다.Deque: 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 자료구조입니다. ArrayDeque, LinkedList가 이를 구현합니다.Collection 인터페이스는 상속 구조 덕분에 다양한 자료구조를 선택할 수 있는 유연성을 제공합니다. (다형성을 활용한 것이라 해석할 수 있습니다)List, Set, Queue 등 적절한 자료구조를 선택하고 사용할 수 있으며, 필요에 따라 LinkedList와 같이 한 가지 자료구조에서 여러 인터페이스를 구현한 클래스도 활용할 수 있습니다.Map Interface는 Java에서 키(key)-값(value) 쌍을 저장하는 자료구조를 정의하는 인터페이스입니다. Map은 데이터를 키와 값의 쌍으로 관리하며, 키를 통해 값을 효율적으로 조회할 수 있습니다.Map은 각 키가 고유해야 하며, 동일한 키로 여러 값을 저장할 수 없습니다. 반면에 값은 중복을 허용합니다.Map 구현체는 요소들이 저장되는 순서를 보장하지 않으나, 일부는 입력 순서나 정렬된 순서를 유지합니다 (LinkedHashMap, TreeMap).put(K key, V value): Map에 주어진 키와 값을 추가합니다. get(Object key): 주어진 키에 해당하는 값을 반환합니다. remove(Object key): 특정 키에 해당하는 값과 키를 Map에서 제거합니다.containsKey(Object key): 특정 키가 Map에 존재하는지 확인합니다.keySet(): Map에 있는 모든 키를 Set으로 반환합니다.values(): Map에 저장된 모든 값을 Collection으로 반환합니다.entrySet(): Map에 저장된 모든 키-값 쌍을 Set<Map.Entry<K, V>> 형태로 반환합니다.HashMap: 가장 많이 사용되는 Map 구현체로, 해시 테이블을 사용하여 키-값 쌍을 저장합니다. LinkedHashMap: HashMap의 확장으로, 저장된(입력된) 순서를 유지합니다. TreeMap: 이진 트리 구조(Red-Black Tree)를 사용하여 키를 정렬된 순서로 저장합니다. Legacy Class들은 초창기에 개발된 컬렉션 클래스들로, 현재는 하위 호환성을 위해 남아 있는 상태입니다. Vector는 동기화된 동작을 제공하는 List의 초기 구현체입니다. ArrayList가 동기화된 List로 더 적합하게 사용됩니다.Stack은 LIFO (Last In First Out) 구조를 구현한 클래스로, Vector를 상속받습니다. Deque 인터페이스의 구현체인 ArrayDeque 클래스를 사용하는 것이 권장됩니다.Hashtable은 동기화된 해시 테이블 구조로, Map 인터페이스의 초창기 구현체입니다. HashMap과, 동시성 처리를 위한 ConcurrentHashMap이 그 역할을 대신하고 있습니다.ArrayListArrayDeque)HashMap 또는 ConcurrentHashMapCollection Framework와 Map Interface는 데이터 처리의 핵심 도구로, 다양한 자료구조를 손쉽게 사용할 수 있도록 해줍니다.