본문 바로가기
Web Programming/Java

[Java] Collection 정리

by jaey0ng 2023. 11. 29.

자바 컬렉션 프레임워크의 상속 구조입니다.

출처: https://gangnam-americano.tistory.com/41

 

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

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

 

여기서 많이쓰는 것은

List, ArrayList, Map, HashMap 정도이다.

 

인터페이스 구현클래스 특징
Set HashSet
TreeSet
순서를 유지하지 않는 데이터의 중복을 허용하지 않습니다.
List LinkedList
Vector
ArrayList
순서가 있는 데이터의 집합으로 데이터의 중복을 허용
Queue LinkedList
PriorityQueue
List와 유사합니다.
Map Hashtable
HashMap
TreeMap
Key, Value로 이루어진 데이터의 집합
순서는 유지되지 않고, Key값이 중복이면 안되지만 value값의 중복은 허용

 

1. Set 인터페이스

 

순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않습니다.

 

  • HashSet
    - 가장빠른 임의 접근 속도
    - 순서를 예측할 수 없습니다.

  • TreeSet
    - 정렬방법을 지정할 수 있습니다.

 

2. List 인터페이스

 

순서가 있는 데이터의 집합으로 데이터의 중복을 허용

 

  • LinkedList
    - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
    - 스택, 큐, 양방향 큐 등을 만들기 위한 용도

  • Vector
    - 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않습니다.

  • ArrayList
    - 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어납니다.

3. Map 인터페이스

 

키(Key), 값(Value)의 쌍으로 이루어진 데이터의 집합으로,

순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용

 

  • Hashtable
    - HashMap보다는 느리지만 동기화 지원
    - null이 불가

  • HashMap
    - 중복과 순서가 허용되지 않으며 null값이 올 수 있습니다.

  • TreeMap
    - 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠릅니다.

출처: https://gangnam-americano.tistory.com/41

 

웹 개발에서의 사용예시

List, ArrayList, Map, HashMap 을 예로 들어보겠습니다.

 

List, ArrayList

List<String, Object> examList = new ArrayList<String, Object>();

 

Map, HashMap

Map<String, Object> examMap = new HashMap<String, Object>();

 

ListMap

public List<Map<String, Object>> selExamList() {
        List<Map<String, Object>> examList = new ArrayList<Map<String, Object>>();
		
        Map<String, Object> examMap = new HashMap<String, Object>();
        examMap = sqlSessionTemplate.selectOne("Mapper.selExamList");
		
        examList.add(examMap);
        return examList;
}