List
- 순서를 유지하고 객체의 번지를 저장
- 중복 저장 가능
- null 저장 가능
- 객체를 인덱스로 관리 : 인덱스로 객체 검색 / 삭제 가능
- 내부 배열에 객체 저장
- 제한없이 객체 추가 가능
- ArrayList
- 인덱스 0번부터 차례대로 저장
- 인덱스 객체 제거 및 추가 시, 1씩 당겨지거나 밀어짐
- 수정에 용이하지 않음
List<E> list = new ArrayList<E>();
List<E> list = new ArrayList<>();
List list = new ArrayList();
- LinkedList
- 인접 객체를 체인처럼 연결해서 관리
- 바로 앞뒤 링크만 변경하면 되므로 ArrayList보다 좋은 성능 발휘
- 수정에 용이
List<E> list = new LinkedList<E>();
List<E> list = new LinkedList<>();
List list = new LinkedList();
Set
- 순서를 유지하지 않고 저장
- 중복 저장 안됨
- 하나의 null만 저장 가능
- 수학의 집합과 유사한 개념
- 인덱스로 관리하지 않기 때문에 인덱스를 매개값으로 갖는 메소드가 없다.
- => 객체를 한 개씩 반복해서 가져와야 함
- for문 사용
Set<E> set = new HashSet<>();
for(E e : set) {
...
}
- iterator() 메소드로 반복자를 얻어 객체를 하나씩 가져오는 것
Set<E> set = new HashSet<>();
Iterator<E> iterator = set.iterator();
- HashSet
- 동일한 객체(=동등 객체)는 중복 저장하지 않는다.
- 중복 저장 X : 다른 객체라도 hashCode() 메소드의 리턴값이 같고, equls() 메소드가 true를 리턴하면 동일한 객체라고 판단하여 중복 저장하지 않는다.
Set<E> set = new HashSet<E>();
Set<E> set = new HashSet<>();
Set set = new HashSet();
Map
- 키(Key)와 값(Value)으로 구성된 엔트리(entry) 객체를 저장
- 키는 중복 저장 안됨
- 값은 중복 저장 가능
- 기존에 저장된 키와 동일한 키로 값을 저장할 경우 : 기존 값은 없어지고 새로운 값으로 대치된다.
- HashMap
- 키를 매개값으로 갖는 메소드
- K는 key 타입, V는 value 타입
- 중복 저장 X : 키로 사용할 객체가 hashCode() 메소드의 리턴값이 같고, equals() 메소드가 true를 리턴할 경우, 동일 키로 보고 중복 저장을 허용하지 않는다.
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<>();
Map map = new HashSet();