[Java] Collections - List

노아카프카·2022년 6월 11일
0

List Interface

- 순서가 있는(Index) 데이터 집합

- 중복 허용

- 종류

  1. ArrayList
  2. LinkedList
  3. Vector
  4. Stack

1. ArrayList

  • 단방향 포인터 구조로, 인덱스가 있으며, 조회 성능이 좋다. O(1)
  • 삽입, 삭제 성능이 안좋음. O(n)
  • 내부적으로 배열을 사용
  • 배열크기 가변, 크기 조정을 위해 새로운 배열을 생성.
  • 주요 Method
    - boolean add(E e)
    - void add(int index, E e)
    • Object[ ] toArray()
    • E remove(int index)
    • E set(int index, E e) : 데이터를 변경하고, 기존데이터 리턴

2. LinkedList

  • 노드와 포인터고 구성
  • 삽입, 삭제 성능이 좋음 O(1)
  • 조회 성능은 안좋음. O(n)
  • 주요 Method
    - void add(int index, Object o)
    • boolean offer(E o) : 끝에 데이터 추가
    • E peek() : 첫 번째 노드 리턴
    • E poll() : 첫 번째 노드 리턴 후 삭제
    • List subList(int a, int b) : a~b사이의 객체를 List로 변환 후 리턴

3. Vector

  • 동기화 !! --> Thread Safe
  • Thread 가 1개일 때에도 동기화하기 때문에, 성능 약간 저하
  • 나머지는 ArrayList와 동일하게 동작

4. Stack

  • Vector를 상속 받음.
  • 후입선출(LIFO)
  • 주요 Method
    - E push(E e)
    • E peek() : 데이터 리턴 후 그대로 유지
    • E pop() : 데이터 리턴 후 삭제

0개의 댓글