List
- 자료들을 순차적으로 늘어놓은 구조
- 저장되는 객체를 인덱스로 관리하기 때문에 인덱스로 객체 검색, 삭제 가능
- 중복되는 객체, null 저장 가능
- 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨짐
- List 인터페이스의 주요 메소드
ArrayList
- List 인터페이스의 구현 클래스
- 배열과의 차이점 → 저장 용량(capacity)을 초과한 객체들이 들어오면 자동적으로 저장 용량이 늘어남
- 동기화(Synchronized) 제공 X
* 동기화 : 하나의 자원(데이터)에 대해 여러 개의 스레드가 접근하려 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 함
Vector
- List 인터페이스의 구현 클래스
- ArrayList와의 차이점 → 동기화(Synchronized) 제공
- 데이터를 담고 있는 요소들이 앞/뒤로 연결된 노드들을 링크(인접 링크)해서 관리
Set
- 저장 순서를 유지하지 않는 구조
- 중복되는 객체 저장 X, null 중복 허용 X
- 인덱스로 관리하지 않기 때문에 인덱스로 매개 값을 갖는 메소드가 없음
- 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(iterator)를 제공
- Set 인터페이스의 주요 메소드
HashSet
- Set 인터페이스의 구현 클래스
- 객체들을 순서 없이 저장, 중복 저장 X
- 내부적으로 hashCode(), equals() 메소드를 사용해 중복 확인
LinkedHashSet
- Set 인터페이스의 구현 클래스
- HashSet과 동일하지만 입력된 순서대로 데이터 관리
- iteration 작업을 할 경우 Set에 삽입된 순서대로 접근
Map
- 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조
- 키(key)와 값(value) 모두 객체
- 키는 중복 저장 X, 값 중복 저장 O