Backend

[JAVA] 컬렉션 Collection 정리 (LIST, SET, MAP)

Dddu 2025. 1. 5. 23:12
컬렉션 (Collection) 이란 ?
 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조


자바 컬렉션 프레임워크의 상속 계층도

 

Collection :  List, Set, Queue로 크게 3가지 상위 인터페이스로 분류할 수 있다.

그리고 여기에 Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.

 

* 자바에서의 자료구조 유형은 다음과 같다.
순서가 있는 목록인 List형
순서가 중요하지 않은 목록인 Set형
먼저 들어온 것이 먼저 나가는 Queue형 (FIFO)
KEY-VALUE의 형태로 저장되는 Map형

자바 컬렉션은 객체를 수집해서 저장하는 역할을 한다.

자바 컬렉션 프레임워크는 몇 가지 인터페이스를 통해 다양한 컬렉션을 이용할 수 있도록 한다.

그중 크게 List, Set, Map 을 정리해보았다.

 

 

1. List : 이름과 같이 목록처럼 데이터를 순서에 따라 관리, 데이터 중복 허용   ex)대기자 명단

    - ArrayList : 많은 데이터 처리시 성능이 떨어지지만 각 데이터에 대한 인덱스를 가져 검색이 빠르다, 순차적 접근 O, 동기화 처리가 되는 컬렉션 생성하면 멀티쓰레드환경에서 쓸 수 있음
       (배열 구조 이용하기 때문에 데이터 추삭을 배열 복사하는 방법으로 처리, 추삭 많을 경우 오버헤드 발생 多
       중간에 삽입될 때 데이터들이 뒤로 밀리면서 성능저하 큼)

    - Vector : 비교적 성능이 좋지 않고 무거워 잘 사용 X(ArrayList의 이전 버전이며 모든 메서드 동기화되어 있음)
        (vector를 본 적이 없다....ㅎ 혹시 사용되어 있는 부분이 있는지 낼 검색해봐야지)

    - LinkedList : 순서가 변경되는 경우 노드 링크만 변경하면 되므로 삽입/삭제가 빈번할 때 빠름,but 검색이 느리다.
       추가 삭제할라면 어쨋든 순차탐색을 해야할텐데 삽입 삭제할 때도 느린 거 아닌가 ...? 

 

2. Set : 순서 유지 X, 데이터의 중복 허용 X      ex)양의 정수집합, 소수의 집합

    - HashSet : 가장 빠른 접근 속도를 가지고 있지만, 순서를 알 수 없다.

    - LinkedHashSet : 요소가 추가된 순서대로 접근이 가능하다.

    - TreeSet : 정렬된 순서대로 보관하며, 정렬방법을 지정할 수 있다.

 

3. Map : 데이터를 Key와 Value로 짝을 이루어 관리하며, Key 값은 중복 허용 X.
* Map의 주요 특징
- 모든 데이터는 키와 값이 존재한다.
- key없이 value만 저장할 수는 없다.
- value 없이 key만 저장할 수도 없다.
- key는 해당 Map에서 고유해야만 한다.
- value는 Map에서 중복되어도 전혀 상관 없다.
- 데이터 추가 순서는 중요하지 않다(데이터를 저장한 순서대로 결과가 출력되지 않는다).

    - HashMap : 중복 허용X , 순서 보장 X, NULL 허용  (Null빼고 보장 ㄴㄴ)

    - HashTable : HashMap 보다는 느리지만, 동기화를 지원한다. NULL 불가

    - TreeMap : 정렬된 순서대로 Key와 Value를 저장하므로 검색은 빠르지만, 데이터 추가/삭제 시 정렬로 인해 느리다.

       정렬되는 순서는 숫자 > 알파벳 대문자 > 알파벳 소문자 > 한글
      정렬을 해야 할 필요가 있다면 HashMap 보다는 TreeMap
을 사용하는 것이 더 유리하다.

    - LinkedHashMap  : HashMap과 기본적으로 동일하지만 입력한 순서대로 접근이 가능하다.

 

 

그럼 마지막으로 항상 헷갈리는 ArrayList LinkedList 에 대해 정리되어 있는 포스팅을 발견하게 되어 아래에 참조걸어두고 끝

[JAVA] ArrayList vs LinkedList 완벽 정리 — Developer_TaeHui (tistory.com)