LinkedList 와 ArrayList의 특징

2020. 1. 13. 01:32Study

LinkedList와 ArrayList는 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체입니다.

인터페이스만 같을 뿐 내부 동작방식은 다릅니다.

ArrayList

- 무작위접근(random access)이 가능합니다.

- n개의 자료를 저장할때 ArrayList는 자료들을 하나의 연속적인 묶음으로 저장합니다.

- 삽입 시 사이즈를 늘려주는 연산이 발생됩니다.

- 삭제 시 빈 인덱스를 채워야 하기 때문에 연산이 발생됩니다.

- 지속적으로 삭제 되는 과정에서 공간만큼 낭비되는 메모리가 많습니다.

- 삽입 삭제가 빈번하게 발행하는 프로세스의 경우 좋지 않습니다.

LinkedList

- 순차접근(sequential access)만 가능합니다.

- n개의 자료를 저장할때 자료들을 저장공간에 불연속적인 단위로 저장

- 인스턴스의 주소만 서로 연결시켜 주면 되기 때문에 추가 삭제가 매우 빠릅니다.

- 메모리 곳곳에 저장되어 있는 노드들을 접근하는데 시간 소모가 많습니다.

- LinkedList는 참조자를 위해 추가적인 메모리를 할당해야합니다.

- 단방향성을 갖고 있어 인덱스를 이용해 자료를 검색하는 애플리케이션에 적합하지 않습니다.

- 삽입삭제가 빈번하게 발생되는 프로세스의 경우 사용하기 좋습니다. 

요약

데이터 검색이 빈번한 경우 ArrayList 를 사용하는 것이 좋습니다. 

삽입 및 삭제가 빈번한 경우 LinkedList 를 사용하는 것이 좋습니다.

'Study' 카테고리의 다른 글

POJO Class란 무엇일까?  (0) 2020.03.09
synchronized란 무엇일까?  (0) 2020.02.14
Process 와 Thread의 차이  (0) 2019.12.03
BufferedReader 와 BufferedWriter  (0) 2019.10.29
StringBuffer란 무엇일까?  (0) 2019.10.29