마이의 개발 블로그

[자료구조] ArrayList와 LinkedList 비교 (자바 컬렉션 프레임워크) 본문

개발지식/자료구조

[자료구조] ArrayList와 LinkedList 비교 (자바 컬렉션 프레임워크)

개발자마이 2022. 2. 3. 23:53
반응형

배경

- 자바 컬렉션 프레임워크의 컬렉션데이터 그룹 3가지 : List, Set, Map

- List 인터페이스 구현 클래스 4가지: ArrayList, LinkedList, Stack, Vector

- 여기서 대표적으로 많이 사용되는 ArrayList와 LinkedList를 비교하고자 함

List 인터페이스 공통점

- 값의 중복을 허용하며 저장순서가 유지된다는 공통점이 있음

ArrayList

- 기존 Vector 클래스를 개선한 클래스로, 구현원리와 기능은 동일하나 가급적 ArrayList를 사용하는 것이 좋음

- Object 타입으로 선언되어 모든 종류의 객체가 사용가능함

- 이름에서도 알 수 있듯 배열과 유사한 구조를 가지며, 내용 추가/삭제/정렬 등의 메서드를 제공함

- 데이터의 추가와 읽기에는 유리하나 용량변경 시 처리시간이 길기 때문에 여유있게 크기를 지정하는 것이 좋음

- 순차적인 데이터의 추가와, 마지막 데이터 삭제에서는 유리하나, 중간에서의 데이터 추가/삭제에는 불리함

LinkedList

- 불연속적인 데이터(노드)를 서로 연결한 형태로 구성되어 있음

- 단일, 이중, 이중 원형 연결리스트

 

1. 단일 연결리스트 (singly linked list)

- 노드의 구성

  1) 다음 노드의 주소값, 2) 데이터

- 데이터의 추가와 삭제에서 유리하다

 

2. 이중 연결리스트 (doubly linked list) - 가장 많이 사용

- 단뱡향 데이터 접근의 문제점을 해결

- 이중 연결 리스트 노드의 구성

  1) 다음 노드의 주소값, 2) 이전 노드의 주소값, 3) 데이터

 

3. 이중 원형 연결리스트 (doubly circular linked list)

- 이중 연결리스트에서 마지막 노드와 처음 노드를 연결하여 순환이 가능하도록 한 것

결론

- 데이터 읽기에는 ArrayList가, 추가/삭제에는 LinkedList가 유리한 편임

- 순차적인 데이터 추가/삭제에는 ArrayList가 LinkedList에 비해 유리함

- 중간부분에서의 데이터 추가/삭제 시에는 LinkedList가 ArrayList에 비해 유리함

반응형
Comments