[JAVA 기초] Array 와 ArrayList

junghan·2023년 2월 10일
0

JAVA

목록 보기
5/12
post-thumbnail

데이터를 배열 형식으로 담기 위해서 보통 Array나 ArrayList를 사용하게 되는데, 어떤 상황에서 적절하게 사용해야할지 의문이 들어서 Array와 ArrayList의 차이를 자세히 알아보기로 하였습니다.

Array란?

배열은 유사한 데이터 유형의 요소를 포함하는 객체입니다. 또한 배열의 요소는 연속 메모리 위치에 유사한 요소를 저장하는 데이터 구조입니다. Java 배열에는 고정된 요소 집합만 저장할 수 있습니다.

장점

  • 코드 최적화: 코드 를 최적화하고 데이터를 효율적으로 검색하거나 정렬할 수 있습니다.
  • 랜덤 액세스: 인덱스 위치에 있는 모든 데이터를 얻을 수 있습니다.

단점

  • 크기 제한: 배열에 고정된 크기의 요소만 저장할 수 있습니다. 런타임 시 크기가 커지지 않습니다. 이 문제를 해결하기 위해 Java에서는 자동으로 커지는 컬렉션 프레임워크를 사용합니다.


ArrayList란?

ArrayList 클래스는 요소를 저장하기 위해 동적 배열 을 사용합니다. 배열과 비슷하지만 크기 제한이 없습니다. 언제든지 요소를 추가하거나 제거할 수 있습니다. 따라서 기존 어레이보다 훨씬 유연합니다. java.util 패키지 에 있고, C++의 벡터와 같습니다.

특징

  • Java ArrayList 클래스는 중복 요소를 포함할 수 있습니다.
  • Java ArrayList 클래스는 삽입 순서를 유지합니다.
  • Java ArrayList 클래스가 동기화 되지 않았습니다 .
  • Java ArrayList는 배열이 인덱스 기반으로 작동하기 때문에 임의 액세스를 허용합니다.
  • ArrayList에서 조작은 Java의 LinkedList보다 약간 느립니다. 배열 목록에서 요소가 제거되면 많은 이동이 발생해야 하기 때문입니다.
  • int, float, char 등과 같은 기본 유형의 배열 목록을 만들 수 없습니다. 이러한 경우 필요한 래퍼 클래스를 사용해야 합니다. 예를 들어:
ArrayList< int > al = ArrayList< int >(); // 작동하지 않음  
ArrayList<Integer> al =  new  ArrayList<Integer>(); // 잘 작동  
  • Java ArrayList는 크기에 따라 초기화됩니다. 크기는 배열 목록에서 동적이며 목록에서 추가되거나 제거되는 요소에 따라 다릅니다.


Array와 ArrayList의 비교



ArrayList의 크기 변경

ArrayList에 값을 추가할 시, arrayList의 size 변수와 element들을 담고 있는 배열의 길이가 같으면 grow()라는 함수를 호출하는데,

newLength() 함수 내부에서 늘어나야하는 배열의 양을 감지하여 새로이 사이즈를 지정해주는 것을 볼 수 있습니다.

https://zorba91.tistory.com/287
https://no1msh1217.tistory.com/m/12
https://www.javatpoint.com/array-in-java

profile
42seoul, blockchain, web 3.0

0개의 댓글