본문 바로가기

Computer Science/자료구조

[CS/Data Structure] ArrayList와 LinkedList

반응형
SMALL

ArrayList

ArrayList는 자바의 List 인터페이스를 구현한 클래스로, 일반적인 배열보다는 느리다. 하지만 초기 할당에서 메모리 크기를 지정해주어야 하는 일반 배열과는 달리, 크기 지정 없이 동적으로 값을 삽입하고 삭제할 수 있다. Index를 가지고 있고 무작위 접근도 가능하다.

 

LinkedList

LinkedList는 양방향 연결 리스트로, ArrayList와는 다르게 Element와 Element 간의 연결을 이용해서 구현되었다. 참조하려는 원소에 따라 정방향 또는 역순으로 순회하며 순차적으로 접근한다.

 


 

이러한 다른 특징으로 필요한 목적에 따라 성능의 차이도 발생한다. 목적이라 함은 데이터의 "삽입 및 삭제" 또는 "조회" !! 가 있다 !!

 

조회

ArrayList는 index를 가지기 때문에 무작위 접근이 가능해서 조회 성능에서 유리하다.

LinkedList는 순차적으로 접근하기 때문에 조회 성능에서 불리하다.

 

삽입 및 삭제

ArrayList는 필요한 공간을 할당해주거나 빈 공간을 채워주어야 하므로 삽입 및 삭제 성능에서 불리하다.

LinkedList는 연결 주소만 변경해주면 되므로 삽입 및 삭제 성능에서 유리하다.

 

 

따라서 조회에서는 ArrayList가, 삽입 및 삭제에서는 LinkedList가 성능 면에서 유리하다는 결론을 낼 수 있다. 아래 시간 복잡도에서도 같은 결과를 한 눈에 확인할 수 있다.

 

 

 

 

References

https://dev-coco.tistory.com/19

반응형
LIST