반응형
자바, 언제 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 를 할 경우 성능이슈가 있을 수 있다.
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java] Properties class 는 뭐 하는 녀석일까? (0) | 2013.09.21 |
---|---|
[android] Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState (0) | 2013.09.21 |
[android] 대체 리소스는 어떤 것을 쓸까? 에 대한 실험 결과 (0) | 2013.09.20 |
[Java] Variable Argument 가변인자!? (0) | 2013.09.19 |
[android] Intent Filter 를 이용하여 link 처리하기. (0) | 2013.09.19 |
댓글