1. Java Collection 이란?
다수의 데이터를 쉽고 효율적으로 처리할 수 있는 방법을 제공하는 클래스의 집합체, 인터페이스를 의미한다.

💡 Collection은 용도에 따라 크게 List, Set, Map 3가지 인터페이스로 분류되어 사용된다.
💡 Collection Interface
: 모든 컬렉션의 상위 인터페이스로서, 컬렉션들이 가지는 핵심 메소드가 선언되어 있다. ( add, isEmpty, remove
.. )
🔎 List형
순서가 있는 데이터의 집합, 데이터 중복 O
1. LinkedList
- 양방향 포인터 구조
- 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
2. ArrayList
- 단방향 포인터 구조
- 데이터마다 Index가 존재해 데이터 조회 기능 우수
3. Vector
- 과거 데이터 대용량 처리를 위해 사용, 상대적으로 성능이 좋지 않아 잘 쓰이지 않음
🔎 Set형
순서가 없는 데이터의 집합, 데이터 중복 X
1. HashSet
- 데이터를 hash table에 저장, Set 중에 가장 성능이 좋음
2. TreeSet
- 저장된 데이터의 값에 따라 정렬, red-black tree 타입으로 값이 저장
🔎 Map형
KEY-VALUE, 키와 값의 쌍으로 이루어진 데이터의 집합,
순서가 없고, 키 중복 X, 데이터 중복 O
💡 동일한 키를 가진 객체를 저장하려 한다면, 기존 값은 사라지고 새로운 값으로 대치된다.
1. HashMap
- 대표적으로 많이 사용되는 Map collection
- 데이터를 Array의 형태로 저장
- KEY로 사용할 객체는
hashCode()
와 equals()
메서드를 오버라이드 해서 동등 객체가 될 조건을 정의해야함
💡 동일 키 조건 : hashCode()
값이 같고, equals()
메서드가 true 를 반환
2. TreeMap
- 데이터를 Binary search tree의 형태로 저장
- KEY 값을 기준으로 데이터 정렬
3. HashTable
- HashMap과 내부 구조 동일
- 동기화된 메서드로 구성되므로, 스레드에 안전(thread safe)
💡 멀티 스레드 환경에서는 동시에 메서드를 실행할 수 없다. 하나의 스레드가 작업이 완료되어야만 다른 스레드가 해당 메서드를 실행할 수 있으므로, 안전한 데이터 작업이 가능하다.