본문 바로가기
Java

Java - Array vs List

by 오늘부터개발시작 2022. 7. 27.

Array와 List는 모두 자바에서 기본적으로 제공하는 자료구조이다. Array와 List를 단순 단어로만 봤을 때는 같은 뜻의 단어인 것 처럼 보인다. 그러나 두 개의 자료구조는 각각 특성이 있어서 맞는 상황에 사용한다면 좀 더 좋은 성능을 낼 수 있다. Array와 List는 모두 장단점이 있는데 먼저 Array의 장단점에 대해서 알아보도록하자.

 

Array 장점

1. 상대적으로 구현하기가 쉽다.

2. index를 가지고 있어서 데이터를 조회하기 쉽고 성능이 빠르다.

3. 순차접근 (for loop)?의 경우에 연속적인 메모리를 할당받기 때문에 List보다 빠르다

4. 논리적 메모리 = 물리적 메모리이기 때문에 추가적인 메모리 할당이 필요 없다.

 

Array 단점

1. 크기를 변경할 수 없다. 크기를 변경할 수 없기 때문에 데이터의 개수가 모호할 경우 크게 만들어 놓고 사용하게 되는데 이 때문에 메모리가 크게 낭비될 수도 있다. 반대로 너무 작게 잡으면 데이터를 넣을 수가 없게 된다.

2. 추가, 삭제시 비용이 크다. 중간에 새로운 원소를 넣게되면 기존에 있던 모든 항목들을 이동시켜야해서 비용이 많이 든다. 데이터가 커지면 커질수록 더 많은 연산이 필요하기 때문에 성능이 떨어진다

List 장점

1. 크기를 먼저 설정하지 않아도 된다. List의 메모리는 연속적이지 않고 떨어져있기 때문에 메모리 공간을 먼저 선점하지 않아도 된다.

2. 추가, 삭제가 빠르다. List는 새로운 원소를 추가할 때는 중간에 넣든 어디에 넣든 앞 뒤에 있는 주소값만 서로 잘 연결해주면 된다. 삭제도 마찬가지이다. 

List 단점

1. 조회가 느리다. index가 없고 각각의 원소가 다음 원소를 가르키고 있는 구조이기 떄문에 특정 원소를 찾기 위해서는 처음부터 탐색을 해야한다. 

2. 추가적인 메모리가 필요하다. 연속된 메모리를 사용하지 않고 떨어져 있기 때문에 이 주소값들의 관계를 저장할 수 있는 메모리 공간이 따로 필요하다. 

 

이렇게 Array와 List의 장단점에 대해서 알아보았다. 조회가 많은 알고리즘이라면 Array를 사용하는 것이 유리하고 추가, 삭제가 많은 알고리즘이라면 List를 사용하면 유리하다. 상황에 따라서 알맞은 데이터구조를 사용할 수 있도록 하자. 

'Java' 카테고리의 다른 글

Java - 컴파일 과정  (0) 2022.08.01
Java - HashSet, LinkedHashSet, TreeSet 차이  (0) 2022.07.31
Java - HashTable이란?  (0) 2022.07.30
Java - HashMap, LinkedHashMap, TreeMap 차이  (0) 2022.07.29
Java - ArrayList, LinkedList, Vector 차이  (0) 2022.07.28