Developing Myself Everyday
article thumbnail

 이번에는 ArrayList와 LinkedList에 대해서 알아보도록 하겠다. 이름만 봐도 알 수 있듯 2개의 자료구조는 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 동작하는 기능은 서로 다르기 때문에 하나하나 알아보고자 한다.

ArrayList


 ArrayList는 중복을 허용하고 순서를 가지며 인덱스로 원소들을 관리한다. 이 말을 들으면 우리는 바로 ArrayList는 Array와 매우 유사한 기능을 가지고 있다고 생각할 수 있다. ArrayLIst란 이름에서도 알 수 있듯이 Array의 이런 점, List의 데이터가 저장될 때 필요에 의해 자동으로 늘어나며 순서를 가지는 점을 가지고 있다.

 

 Array와 가장 큰 차이점은 Array는 처음에 크기를 지정하면 그 크기는 변하지 않지만, ArrayList는 크기를 마음대로 조정할 수 있다는 차이가 있다. 다만 ArrayList는 내부적으로 Array들의 List로 구성되어 있다. 그래서 default 값인 10의 크기보다 더 많은 값을 추가하려 할 때에는 추가되는 값보다 더욱 더 큰 Array를 만들어서 데이터들을 옮기는 과정을 가져야 한다. 이런 점에서 Array보다 느리기 때문에 Array로 처리가 가능할때는 가능하면 Array를 사용하는것이 좋다.

 

LinkedList


  ArrayList는 데이터들이 순서대로 쭉 늘어선 배열의 형식을 취하고 있는 반면 LinkedList는 자료의 주소값으로 서로 서로 연결되어 있는 구조를 하고 있다. 

LinkedList는 양방향의 연결 리스트로 구성되어서 참조하려는 원소에 따라 처음부터 순방향이나 역순으로 순회할 수 있다. 다만 큰 단점이 존재하는데  만약 데이터를 추가하려면 처음부터 끝까지 추가할 위치를 찾아가야 하기 때문에 시간이 많이 걸린다.

 

ArrayList vs LinkedList


 데이터 조회

데이터를 조회할 때 ArrayList는 각 데이터의 index번호를 가지고 있기 때문에 원하는 데이터의 index 번호만 알고 있다면 데이터를 아주 쉽게 조회할 수 있다. LinkedList는 순차적으로 데이터를 접근하기 때문에 조회하는 속도가 느리다.

 

데이터 조회 - ArrayList WIN

 데이터 삽입과 삭제

 데이터를 삽입하거나 삭제할때 ArrayList는 마지막에 데이터를 삽입하거나 삭제한다면 큰 이상이 없지만 데이터의 중간에 삽입, 삭제를 해야한다면 그만큼 뒤의 데이터들을 이동시킬 필요가 있다. LinkedList는 데이터를 삽입하거나 삭제할때 데이터를 가리키고 있는 주소값만 변경해주면 되기 때문에 삽입, 삭제시 상당히 효율적이다.

 

데이터 삽입과 삭제 - LinkedList WIN

 

Reference

 

Java의 LinkedList와 ArrayList에 대한 비교 · 안녕 프로그래밍

리스트는 모든 프로그래밍 언어에서 가장 유용한 자료구조 중의 하나이다. LinkedList와 ArrayList는 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을

www.holaxprogramming.com

 

 

 

 

[JAVA] ArrayList와 LinkedList의 차이

ArrayList vs LinkedList 차이 List 인터페이스의 구현체는 뭐가 있을까요? Stack, Vector, ArrayList, LinkedList가 있습니다. 이 중에서도 대표적인 클래스인 ArrayList, LinkedList 차이에 대해 정리해보겠습니다. Array

devlog-wjdrbs96.tistory.com

 

'개발자의 기본 소양 > DATA STRUCTURE' 카테고리의 다른 글

PriorityQueue & Heap  (0) 2023.02.23
Queue & Stack  (0) 2022.12.04
List, Set, Map to Kotlin  (0) 2022.12.04
자료구조의 분류  (0) 2022.12.04
profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!