Programming/자바(Java)

11-12 LinkedList / ArrayList, LinkedList 비교

먹보 개발자 2024. 10. 13. 23:14

배열의 장단점

장점:

배열은 구조가 간단하고 데이터를 읽는데 걸리는 시간(접근 시간, access time)이 짧다. (연속적이라서)

단점:

1. 크기를 변경할 수 없다.

    - 크기를 변경해야하는 경우 새로운 배열을 생성 후 데이터를 복사해야함.   

    - 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨.

2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.

    - 데이터를 추가하거나 삭제하기 위해, 다른 데이터를 옮겨야함.

    - 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다.

 

요약: 크기변경이 불가능하고, 추가 및 삭제 시간이 많이걸림

 

이런 배열의 단점을 보완하기 위해 LinkedList를 쓴다.

- 배열과 달리 링크드 리스트는 불연속적으로 존재하는 데이터를 연결(link)

데이터의 삭제: 단 한 번의 참조변경만 으로 가능 (변경에 유리)

 

데이터의 추가: 한번의 Node객체 생성과 두 번의 참조변경 만으로 가능

 

 

이중 연결 리스트

링크드 리스트(linked list) - 연결리스트. 데이터 접근성이 나쁨 (자기 다음밖에 모름)

앞 뒤로 이동만 좋아졌을 뿐 한 번에 두, 세개를 갈 수 없어 아쉬움.

 

 

 

ArrayList vs LinkedList - 성능 비교

 

1. 순차적으로 데이터를 추가/삭제 - ArrayList가 빠름

2. 비순차적으로 데이터를 추가/삭제 - LinkedList가 빠름

3. 접근시간(access time) - ArrayList가 빠름

* 인덱스가 n인 데이터 주소 = 배열의 주소 + n * 데이터 타입의 크기

 

컬렉션 읽기(접근시간) 추가/삭제 비 고
ArrayList 빠르다 느리다 순차적인 추가삭제는 더 빠름
비효율적인 메모리사용
LinkedList 느리다  빠르다 데이터가 많을수록 접근성이 떨어짐

'Programming > 자바(Java)' 카테고리의 다른 글

11-22 Iterator, ListIterator, Enumeration  (5) 2024.10.14
11- 15 Stack & Queue  (1) 2024.10.14
11-7 ArrayList  (0) 2024.10.11
11-1 컬렉션 프레임웍  (1) 2024.10.11
9-25 래퍼(wrapper)클래스 / Number클래스  (0) 2024.10.11