-
Linked List VS Array List안드로이드 2019. 4. 12. 19:54
리스트는 많은 양의 데이터들을 효과적으로 관리하기위해 만든 자료구조 중 하나입니다.
이중 Linked List와 Array List는 Java의 List인터페이스를 구현한 Collection 구현체입니다.
Collection 구현체란, 여러 원소들을 담을 수 있는객체로서 배열과는 다르게 크기에 제한이 없고 Resizable한 특징을 가지고 있습니다.
Linked-List
Linked는 연결된 이라는 뜻을 가지고 있는 단어입니다. 한국어로 있는 그대로 해석하면 연결된 리스트라는 말이 되는데 이처럼 Linked-List의 구조를 보면 아래의 그림처럼 실제로 모든 데이터들이 하나로 연결되어 있는 모습을 볼수 있습니다.
https://hackernoon.com/the-little-guide-of-linked-list-in-javascript-9daf89b63b54 이미지 참조
위의 그림을 보면 각각의 node들은 다음과 같은 정보를 가지고 있습니다.
다음 node의 정보(next)
이전 node의 정보(prev)
node의 밸류값
이처럼 각각의 노드가 인접한 노드들의 정보를 가지고 있기 때문에 각자의 노드가 서로서로 연결되어 뱀과 같은 구조를 가집니다.
Linked-List의 장점
데이터의 삽입 또는 삭제시 인접해있는 node의 next prev의 값만 변경해주면 쉽게 삽입 삭제가 가능하기 때문에 대용량의 데이터처리가 필요할 때 이용하는 것이 좋습니다.
Linked-List의 단점
데이터의 삽입 또는 삭제에 용이하지만 검색을 할때는 시작 node부터 목표 node까지 다음 node의 정보를 타가면서 진행해야하기 때문에 검색에 있어서는 좋지않은 성능을 보여줍니다. 따라서 Random Access의 경우 Index를 가지고있는 ArrayList보다 불리한 성능을 보여줍니다.
Array-List
Array-List는 배열이 나란히 연결된 형태를 띄고있습니다. Linked-List는 각각의 데이터를 불연속적으로 보관하는 반면, Array-List는 하나의 연속된 집합으로서 데이터를 보관하고 있습니다.
https://javaradar.blogspot.com/2017/03/difference-arraylist-vs-linkedlist.html 이미지 참조
위의 그림을 보면 각각의 데이터들은 index라고 하는 순서 번호를 부여받게 되며 연속된 데이터 집합의 특성을 가지고 있습니다. 각 데이터들은 부여받은 index를 이용하여 데이터 검색 시 순차적 접근이 아닌 Random Access가 가능하게 됩니다.
Array-List의 장점
데이터가 index라고 하는 참조데이터를 부여받아 가지고 있음으로서 데이터의 참조가 유리해 검색에 용이합니다.
Array-List의 단점
데이터의 삽입 또는 삭제를 위해 데이터가 삽입 될때 해당 인덱스의 뒤에 데이터가 있는 경우 해당 인덱스에 데이터를 삽입하기 위해 해당 인덱스 부터 제일 마지막 데이터의 배열을 하나씩 뒤로 이동하여야하기 때문에 인접 node의 정보만 변경하면 되는 Linked-List에 비해 삽입과 삭제에는 용이하지 않습니다.
summary
다음과 같이 Array-List와 Linked-List의 차이점에 대해 알아봤는데 데이터 관리와 성능을 위해서 적재적소에 적절한 요소들을 고려하여 적용해봐야하겠습니다.
세계 최강을 꿈꾸는 안드로이드 Front-End 개발자입니다.
Github 주소: github.com/rkswlrbduf
이전 블로그 주소: blog.naver.com/rkswlrbduf => 블로그 이전중...
'안드로이드' 카테고리의 다른 글
안드로이드 생명주기-Android LifeCycle (0) 2019.04.12 Android Q - RoleManager (0) 2019.04.12 RxKotlin + Retrofit2 + GitHub API (0) 2019.04.12 ConstraintLayout 살펴보기 (0) 2019.04.12 RecyclerView Filter 사용하기 (1) 2019.04.12 댓글