<aside> 💡
여러개의 데이터를 저장하기 위한 자료구조
List,Set,Map인터페이스가 존재
ArrayList<T> : index가 있다. 배열기반이다
→ (내부에서 어떤 기능을 하는지)
→ 배열이 꽉차면 기능을 안하는데 어떻게 하는지
HashSet<T> :
HashMap<T> :
→ 대량의 데이터를 담을 수 있는 자료구조
→ 인터페이스와 클래스 형태로 제공
→ 자바에서 제공해주는 인터페이스
인터페이스 | 설명 | 특징 | 대표 구현 클래스 |
---|---|---|---|
List | 순서가 있는 데이터의 집합 (Heap에 저장( | 데이터 중복 허용 O | ArrayList,LinkedList |
Set | 순서를 유지하지 않는 데이터의 집합 | 데이터 중복 허용 X | HashSet,LinkedHashSet |
Map | 키(Key)와 값(Value)의 쌍으로 이루어진 데이터의 집합 | 순서유지 X, 키 중복 X, 값 중복 O | HashMap,LinkedHashMap,Properties |
인터페이스
→ 상수, 추상메서드. default로 된 매서드들
→ 가이드들을 제공
Collection Interface
List,Set Map
List
⇒ LinkedList, ArrayList, Vactor (List의 인터페이스에서 오버라이드를 했으니 메서드 이름이 같다)
⇒ 내부에서는 배열을 기반으로 작동
⇒ 인덱스가 존재한다.
⇒ 데이터를 넣는대로 들어간다(제한X)
⇒ 인덱스가 존재하기 때문에 조회에 유리하다
⇒ 추가/삭제에는 불리 (상대적으로)
⇒ 주소가 연속적임
arrayList<String> list = new ArrayList<>();
add(E e) : 데이터를 추가(맨 뒤에 들어감)
add(int index, E e) : 데이터 추가(내가 원하는 위치에 추가)
set(int index, E e) : 내가 원하는 위치의 데이터 수정
remove(int index) : 내가 원하는 위치의 데이터 삭제
clear() : 리스트 안의 내용을 모두 삭제(list는 유지)
contains(E e) : 리스트 안의 요소가 있는지 판별
⇒ 노드(Node)를 기반으로 동작
→ 노드의 하나의 구성 : 담을려는 데이터와 다음으로 가는 주소를 가지고 있는 객체
→ 동작 : 하나의 노드는 그다음으로 가는 노드 하나의 구성을 알고있다 (포인터)