<aside> 💡

여러개의 데이터를 저장하기 위한 자료구조

List,Set,Map인터페이스가 존재

ArrayList<T> : index가 있다. 배열기반이다

→ (내부에서 어떤 기능을 하는지)

→ 배열이 꽉차면 기능을 안하는데 어떻게 하는지

HashSet<T> :

HashMap<T> :

  1. ArrayList
  2. HashMap
  3. HashSet </aside>

→ 대량의 데이터를 담을 수 있는 자료구조

→ 인터페이스와 클래스 형태로 제공

→ 자바에서 제공해주는 인터페이스

인터페이스 설명 특징 대표 구현 클래스
List 순서가 있는 데이터의 집합 (Heap에 저장( 데이터 중복 허용 O ArrayList,LinkedList
Set 순서를 유지하지 않는 데이터의 집합 데이터 중복 허용 X HashSet,LinkedHashSet
Map 키(Key)와 값(Value)의 쌍으로 이루어진 데이터의 집합 순서유지 X, 키 중복 X, 값 중복 O HashMap,LinkedHashMap,Properties


List 인터페이스의 구현 클래스

ArrayList

⇒ 내부에서는 배열을 기반으로 작동

⇒ 인덱스가 존재한다.

⇒ 데이터를 넣는대로 들어간다(제한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) : 리스트 안의 요소가 있는지 판별

LinkedList

⇒ 노드(Node)를 기반으로 동작

→ 노드의 하나의 구성 : 담을려는 데이터와 다음으로 가는 주소를 가지고 있는 객체

→ 동작 : 하나의 노드는 그다음으로 가는 노드 하나의 구성을 알고있다 (포인터)

image.png