15. What is difference between ArrayList and LinkedList ?

toutbon·2024년 3월 7일
0

질문의 목적

  • List Collection에서 자주 사용하고 있는 ArrayList 와 LinkedList 의 차이

List

  • element 들의 순서를 지원하는 interface
  • Vector vs arrayList
  • ArrayList vs LinkedList

Vector vs ArrayList

  • 기본적인 동작은 비슷함

vector

  • 완전 조상님. 처음부터 만들어져서 지금까지 유지되어옴
  • 사이즈를 넓혀야 할 경우 두배씩 크기를 키운다
    - 처음 (길이)10로만들면 새롭게 11번째인 element를 넣을때 디폴트로 20개로 늘어남.
  • synchronised (동기화)

ArrayList

  • 사이즈를 넓혀야 할 경우 50%씩 크기를 키운다
  • synchronised 를 지원하지 않기 때문에 vector보다 성능이 좋다
  • 동기화를 고려해야할 상황이 아니라면 vector보다 arraylist 추천

동기화를 고려해야할 상황

  • 같은 데이터에 여러자원이 접근하게 될 경우 데이터의 일관성을 고려할 필요가 있다

ArrayList vs LinkedList

ArrayList

  • list interface를 구현했기 때문에 기본적으로 순서를 가지고 index를 구현
  • 랜덤하게 특정 요소에 접근할 경우 빠르게 접근 가능
  • 추가/ 삭제인 경우 속도가 느리다 전체 인덱스를 재배치 해야함.

LinkedList

  • 노드의 개념으로 앞뒤 요소들이 연결되어있다
  • head/ tail
  • 추가/ 삭제 시 빠르다. head와 tail 에게만 영향도를 줌
  • 검색시 처음부터 하나하나 순차적으로 체크해야해서 속도가 느리다.
  • 단방향성을 가지고 있기 때문데 index를 가지고 데이터에 접근해야하는 경우에는 부적절한 자료구조이다

Keyword check

  • vector
    - synchronised elements, huge size increase
  • ArrayList
    - better for random accessing elements by index, slow for add/remove
  • LinkedList
    - large number of add/remove operations but rarely access of elements
profile
뚜봉

0개의 댓글