[자료구조] ArrayList vs LinkedList

JD_S·2022년 11월 8일
0

자료구조

목록 보기
2/4

Array

장점

  • 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근 시간)이 짧다.

단점

  • 크기를 변경할 수 없다.
    • 크기를 변경해야 하는 경우 새로운 배열 생성 후 데이터를 복사해야 함.
    • 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리 낭비가 됨.
  • 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.
    • 데이터를 추가하거나 삭제하기 위해, 다른 데이터를 옮겨야 함.
    • 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다.

ArrayList

기존의 Vector를 개선한 것을 구현원리와 기능적으로 동일 하지만 Vector는 동기화처리가 되어 있지만 ArrayList는 그렇지 않다.
데이터의 저장공간으로 배열을 사용한다. 저장순서가 유지되고 중복을 허용한다.

LinkedList

ArrayList의 단점을 보완했다. 그리고 ArrayList와 달리 LinkedList는 불연속으로 존재하는 데이터를 연결

  • 데이터의 삭제 : 단 한 번의 참조변경만으로 가능
  • 데이터의 추가 : 한 번의 Node객체 생성과 두 번의 참조변경만으로 가능
  • 접근성이 떨어진다. (이중 연결 리스트를 사용하면 접근성이 향상된다)
  • 데이터 추가/삭제에 대한 부하가 적은 반면 메모리의 사용은 더 많다.

ArrayList vs LinkedList

  • 순차적으로 데이터를 추가/삭제 - ArrayList(배열기반-연속적)가 빠름
  • 비순차적으로 데이터를 추가/삭제 - LinkedList(연결기반-불연속적)가 빠름
  • 접근 시간 - ArrayList가 빠름

결론 : 데이터의 개수가 변하지 않는 경우라면 ArrayList를 사용하면 되고 변경이 잦다면 LinkedList를 사용하면 된다.

Reference

  • Java의 정석 (남궁성 저자)
profile
Whatever does not destroy me makes me stronger.

0개의 댓글