티스토리 뷰

Java/기본

ArrayList와 LinkedList의 차이점

따강아지 2023. 5. 1. 20:54

자바 표준 라이브러리 중 컬렉션collection에 있는 ArrayListLinkedListList 인터페이스를 구현한 것으로 JCFJava Collections Framework의 상속 구조는 다음과 같습니다.

그림  SEQ 그림 1 JCF성속구조

ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하고 삽입/삭제 작업 시 해당 위치 이후의 모든 데이터를 이동하여 삽입/삭제시는 느리지만 데이터를 조회하는 작업에서는 인덱스를 통한 접근을 하여 빠른 성능을 제공합니다. LinkedList는 내부적으로 노드node로 구성이 되어 있어 삽입/삭제 작업 시 해당 노드의 위치만 변경하여 빠르지만 조회 작업 시 모든 노드를 검색하므로 느립니다.

그림  ArrayList As LinkedList

추가 또는 제거와 같은 기능이 많은 코드를 작성시에는 LinkedList가 적합 하고 읽기 빈도가 높으면 ArrayList를 사용하는 것이 좋습니다. 또한 메모리 측면에서 ArrayList보다 LinkedList가 메모리 오버헤드기 크며, LinkedList가 링크  추가 공간이 필요하므로 ArrayList가 효율적 입니다. 다음 표 2-1ArrayListLinkedList의 차이점 입니다.

2-1  : ArrayListLinkedList차이점

  ArrayList LinkedList
1) 동적 배열을 사용하여 요소를 저장합니다. 내부적으로 이중 연결 목록을 사용하여 요소를 저장합니다.
2) 배열을 사용하기 때문에  배열에서 요소가 제거되면 다른 모든 요소는 메모리에서 이동되어 느립니다 이중 연결 목록을 사용하기 때문에 ArrayList보다 빠르고  메모리에서 비트 이동이 필요하지 않습니다.
3) List만 구현하기 때문에 목록으로만 작동할 수 있습니다. List Deque 인터페이스를 구현하기 때문에 목록 및 대기열 역할을 모두 수행할 수 있습니다.
4) 데이터 저장 및 액세스에 더 좋습니다 . 데이터 조작에 더 좋습니다 .
5) 요소에 대한 메모리 위치는 연속적입니다. 연결된 목록 요소의 위치는 전염성이 없습니다.
6) 일반적으로 초기화되면 기본 용량인 10이 할당됩니다. 기본 용량의 경우가 없고 초기화되면 빈 목록이 생성됩니다.
7) ArrayList는 크기 조정이 가능한 배열 입니다. List인터페이스의 이중 연결 목록을 구현합니다.

 

 

'Java > 기본' 카테고리의 다른 글

자바에서 Array와 ArrayList차이점  (0) 2023.05.01
034. Java Inner Class  (0) 2022.05.31
033. Java Generic  (0) 2022.05.25
032. Java Class 상속  (0) 2022.05.24
031. Java 외부 구성 요소  (0) 2022.05.16