LinkedList의 특징을 알아보기 이전에 기존 배열의 특징을 알아볼 필요가 있다.
배열의 장단점
장점: 배열은 구조가 간단하고 데이터를 읽는 데 처리 시간이 짧다.
단점: 배열의 크기를 지정하고 나면 변경할 수 없다.
[크기를 변경해야 하는 경우] 새로운 배열을 생성 후 데이터를 복사해야 한다.
[크기 변경을 피하기 위해] 선언 시 공간이 큰 배열을 선언하게 되면 메모리가 낭비된다.
비순차적인 데이터의 처리(추가, 삭제)에 시간이 많이 걸린다. (배열의 안쪽의 데이터 요소들)
=> 자리를 옮겨서 복사를 해야함
반대로 순차적 삭제(배열의 맨 앞, 혹은 맨 뒤)는 빠르다.
linkedList
배열과 달리 불연속적으로 존재하는 데이터를 연결함 <-> 배열은 각 요소가 연속적
장점: 단 한 번의 참조변경으로 데이터의 추가 및 삭제를 처리할 수 있음
배열
LinkedList
다음노드를 가리키는 참조변수(next)를 가지고 있다.
단점: 불연속적이기 때문에 데이터의 접근성이 나쁘다.
(첫번째 요소는 두번째 요소는 알 수 있지만 그 다음 요소들의 위치는 알 수 없다.)
배열, LinkedList 요약
구분 | 특징 | 장점 | 단점 |
배열(array) | 연속적 | 처리시간이 짧다. | - 비순차적 데이터연산에 많은 시간 소비 - 배열의 크기를 변경할 수 없음 |
LinkedList | 불연속적 | 데이터의 변경이 자유롭다. | - 데이터의 접근성이 나쁘다. (다음 요소의 참조만 가능) |
LinkedList의 단점을 개선한 것이 더블링크드 리스트(이중연결 리스트)
node next와 node previous를 가지고 있어서 이전요소와 다음요소를 둘 다 참조할 수 있다.
ArrayList LinkedList 성능비교
컬렉션 | 읽기(접근시간) | 추가 / 삭제 | 비고 |
ArrayList | 빠르다 | 느리다 | 순차적인 추가삭제는 더 빠름 비효율적 메모리 사용 |
LinkedList | 느리다 | 빠르다 | 데이터가 많을수록 접근성이 떨어짐 |
'Java' 카테고리의 다른 글
자바 스택과 큐(Stack & Queue) 그리고 LIFO, FIFO (0) | 2022.01.16 |
---|---|
자바 스트림(Stream)과 파일 입출력(File I/O) - java.io.File (0) | 2022.01.13 |
자바 컬렉션프레임워크 HashMap, HashTable 순서, 중복 알아보기 (0) | 2022.01.12 |
자바 컬렉션 프레임워크(List, Set, Map) (0) | 2022.01.10 |
자바 Scanner 대신 bufferedReader를 사용하는 이유 ( BufferedWriter, StringTokenizer 사용법) (0) | 2022.01.10 |
댓글