본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] 언제 ArrayList 써야 하고 언제 LinkedList 를 써야 하나?

by 돼지왕 왕돼지 2013. 9. 20.
반응형


 자바, 언제 ArrayList 써야 하고 언제 LinkedList 를 써야 하나?

 


[Java] 언제 ArrayList 써야 하고 언제 LinkedList 를 써야 하나?


ArrayList 이야기


ArrayList 는 일반 Array 와 비슷한 구조로 되어 있다.

따라서 예를 들어 총 5개의 원소가 있는 ArrayList 가 있는 경우, 첫번째 있는 element 를 제거할 경우 뒤에 있는 4개의 원소를 한칸씩 앞으로 복사해야 하는 문제가 발생한다. 반면 맨 뒤쪽에 element 를 추가 삭제하는 경우에는 성능이슈가 발생하지 않는다.


element 에 접속할 때는 일반 array 와 같이 일관성 있게 memory 에 접근할 수 있어 특정 element에 바로 접근할 수 있다.




LinkedList 이야기


반면 LinkedList 의 경우는 한 element 간의 관계가 사슬처럼 이어져 있는 형태이다.

따라서 중간 element 를 제거할 경우 끊어진 사슬만 빼내고, 앞 뒤 사슬을 연결하는 형태로 성능이슈 없이 중간 원소를 제거하기 쉽다. 반면 가장 마지막 index 에 element 를 추가하거나 삭제할 경우 ArrayList 에 비해 성능이 떨어진다.





또한 ArrayList와는 반대로, 마지막 element 에 접근하게 될 경우에는 첫 element로부터 끝 element 까지 순차적으로 메모리 주소를 타고 가야 하기 떄문에 갯수가 엄청 많은 경우 random access 를 할 경우 성능이슈가 있을 수 있다.



반응형

댓글