Collection-List,Set,Map

현정재·2024년 11월 9일
0

1. List 인터페이스 구현체의 사용 사례

ArrayList:

빠른 조회가 필요한 경우 유리합니다.
예를 들어, 읽기 작업이 많고 삽입/삭제가 적은 경우 적합합니다.
연속적인 인덱스 접근이 중요한 경우(예: 조회용 리스트) 자주 사용됩니다.

LinkedList:

중간에 삽입/삭제가 빈번한 경우 적합합니다.
예를 들어, 큐나 스택처럼 양쪽에서 데이터를 추가하거나 제거해야 하는 경우 유리합니다.
데이터의 크기가 자주 변하고 인덱스 접근이 중요하지 않은 경우에 적합합니다.

Vector:

동기화가 필요한 멀티스레드 환경에서 사용됩니다.
하지만, 일반적으로 멀티스레드 환경에서는 Vector보다 CopyOnWriteArrayList나 다른 동기화 컬렉션을 더 자주 사용합니다.


2. Set 인터페이스 구현체의 사용 사례

HashSet:

순서가 중요하지 않고 빠른 접근 속도가 필요한 경우 적합합니다.
중복을 제거하면서 데이터를 관리할 때 자주 사용됩니다.
예: 중복을 제거한 유일한 아이템을 관리할 때.

LinkedHashSet:

삽입 순서를 유지하면서 중복을 제거하고 싶을 때 유리합니다.
순서가 유지되어야 하며, 중복 없는 데이터를 저장할 때 사용됩니다.
예: 입력된 순서가 중요한 경우.

TreeSet:

데이터를 정렬된 상태로 유지하면서 중복을 제거하고 싶을 때 사용됩니다.
자연 순서나 사용자 정의 순서로 정렬이 필요할 때 유리합니다.
예: 정렬된 순서로 데이터가 필요하거나, 범위 검색이 필요할 때.


3. Map 인터페이스 구현체의 사용 사례

HashMap:

빠른 데이터 접근이 필요하고 키의 순서가 중요하지 않은 경우 적합합니다.
키-값 쌍을 빠르게 저장하고 검색해야 할 때 자주 사용됩니다.
예: ID와 객체를 매핑할 때.

LinkedHashMap:

입력 순서를 유지해야 하거나, 액세스 순서에 따라 정렬하고 싶을 때 사용됩니다.
최근에 접근한 데이터를 유지하고 싶을 때 유리합니다.
예: LRU(Least Recently Used) 캐시 구현.

TreeMap:

정렬된 순서가 필요한 경우 적합합니다.
범위 검색(예: 특정 값보다 큰 키만 조회)이나 자동 정렬이 필요한 경우 사용됩니다.
예: 특정 범위 내의 데이터를 빠르게 찾고자 할 때.

Hashtable:

동기화가 필요한 멀티스레드 환경에서 사용됩니다.
HashMap과 비슷하지만 동기화가 필요할 때 유리합니다.
다만, 최신 Java에서는 ConcurrentHashMap이 일반적으로 Hashtable을 대체하고 있습니다.

profile
wonttock

0개의 댓글