12 LinkedList - 배열의 장단점
장점
- 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. 연속적이어서 간단한 계산으로 주소를 쉽게 얻을 수 있다.
단점
- 크기를 변경할 수 없다. (실행중에)
-크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사 해야 함. (더 큰 배열 생성 후, 복사해서 참조 변경을 해야 한다.)
-크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨.
- 비 순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.
-데이터를 추가하거나 삭제하기 위해, 다른 데이터를 옮겨야 함.
-그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다.
배열의 단점을 보완
- 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link)
- 데이터의 삭제 : 단 한 번의 참조변경만으로 가능
- 데이터의 추가 : 한 번의 Node객체생성과 두 번의 참조변경만으로 가능
LinkedList - 이중 연결 리스트
linked list
- 연결 리스트. 접근성이 나쁨. 첫번째 요소는 그 다음 요소만 알고 있고 그 다음 다음 요소는 알지 못해서 배열처럼 한번에 접근이 불가능 하다.
class Node {
Node next;
Object obj;
}
doubly lined list
class Node {
Node next;
Node previous;
Object obj;
}
doubly circular linked list
- 이중 원형 연결 리스트. 마지막 요소를 맨 앞에 연결 해 놓고, 맨 첫번째 요소를 맨 끝에 연결 해 놓는다.
ArrayList / LinkedList 성능 비교
- 순차적으로 추가 / 삭제 하기 : ArrayList가 빠름
- 비순차적으로 추가 / 삭제 하기 : LinkedList가 빠름
- 접근 시간 테스트 : ArrayList가 빠름
- ArrayList
: 배열 기반의 자료 구조. 순차적인 추가 삭제는 더 빠름. 비효율적인 메모리 사용.
- LinkedList
: 연결 기반의 자료 구조. 데이터가 많을수록 접근성이 떨어짐.