Java

[Java] Arrray와 ArrayList

SN.Flower 2023. 10. 26.


Array와 ArrayList의 공통점

 

  • 요소를 추가, 조회할 때의 성능이 비슷하다.
  • 중복되는 요소를 저장할 수 있다.
  • null 값을 저장할 수 있고, index를 사용하여 값을 참조할 수 있다.
  • 순서가 지정되지 않는다.

 

Array와 ArrayList의 차이점

 

  Array ArrayList
사이즈 초기화시 고정
int[] arr = new int[5];
초기화시 사이즈를 표시하지 않음.
크기가 가변적임.
ArrayList<Integer> arrList = new ArrayList<>(); 
속도 초기화시 메모리에 할당되어 ArrayList보다 속도가 빠름 데이터 추가시 메모리를 재할당해서 Array보다 속도가 느림
크기 변경 크기 변경 불가 데이터 추가, 삭제시 크기 변경 가능
다차원 다차원 가능
int[][] arr = new int[5][5];
다차원 불가능
타입 primitive type(int, byte, char 등), object object 요소만 가능
길이 length 변수 size() 메서드
변수 추가 assigment 연산자(=) 사용 add() 메서드 사용

 

ArrayList를 사용하는 것이 좋을까?

 

ArrayList와 비교했을 때, Array의 단점은 아래와 같다.

  • 한 번 지정한 크기를 중간에 조정할 수 없다.

배열의 길이보다 배열의 요소가 더 많아지는 경우가 생기면 배열을 재생성해야한다.

  • 배열의 요소에 추가, 수정, 삭제 등의 변동이 생길 때 관리가 필요하다.

예를 들어 배열의 요소를 삭제한다면 해당 index 값은 비어있게 되고, 기존의 다른 요소들을 당겨오는 등의 코드를 구현해야 한다.

 

즉, 기존의 Array는 데이터 요소에 추가, 수정, 삭제 등의 변동이 생길 때마다 취약점이 생긴다.

하지만 ArrayList는 데이터의 변동에 따라 알맞게 크기가 변동된다.

 

ArrayList 컬렉션 내 add 메서드. 배열 요소를 스스로 관리할 수 있도록 구현되어 있다.

 

이는 개발자가 배열 요소의 직접적인 관리를 따로 구현할 필요 없이, 바로 사용할 수 있는 최적의 메서드가 이미 구현되어 있기 때문이다.

따라서, ArrayList의 길이보다 많은 양의 데이터가 추가되면 ArrayList의 크기가 동적으로 늘어나고, 중간에 있는 데이터를 삭제하더라도 기존의 요소들이 자동으로 빈 자리를 채우면서 당겨지게 된다.

 

이러한 장점을 고려했을 때, 애플리케이션을 개발하면서 확장 가능성을 항상 열어두는 것이 좋기때문에 크기가 비가변적인 Array보다 크기가 가변적인 ArrayList를 사용하는 것을 더 권장한다.

 


Reference

https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-ArrayList

 

[자료구조] Array vs ArrayList

Array와 ArrayList은 모든 것이 비슷합니다. 가장 큰 차이점은 길이를 조정할 수 있는가? 없는가? 입니다.Java의 Array는 고정 길이 입니다. 따라서, 정해진 길이의 배열을 모두 채우면, 새로운 데이터를

velog.io

https://oscarstory.tistory.com/39

 

[JAVA] 배열 Array (2) - ArrayList / ArrayList 메서드

배열에 대해 알아보았던 지난 포스팅에 이어서, 배열의 진화라고 볼 수 있는 ArrayList 에 대해 알아보자. ArrayList 시간의 흐름에 따라 기술은 계속 향상되기 마련이다. ArrayList는 기존의 배열의 단

oscarstory.tistory.com

 

댓글