자바(JAVA) 기초 함께 알아보자

자바(JAVA) 기초 함께 알아보자(17) - Array(배열)과 ArrayList의 차이

jay_the_code 2024. 10. 19. 11:36

지난번 ArrayList에 이어서 이번글에서는

Array(배열)과 ArrayList의 차이에 대해서

알아보겠습니다.

 

먼저 Array와 ArrayList는 상당 부분 비슷한 특성을

가지고 있습니다.

 

Array와 ArrayList는 모두 자료를 저장하는 데 사용되는

자료구조입니다.

 

Array와 ArrayList의 차이점(1)
배열의 크기

 

먼저 Array와 ArrayList의 가장 큰 차이점은

Array는 배열의 크기가 초기화시에 지정하여

고정되어 있고
ArrayList는 배열의 크기가 고정되어 있지 않는 점입니다.

 

따라서 배열의 크기를 예상할 수 없는 경우 혹은 바뀔 수 있는

가능성이 있을 때는 ArrayList를 사용하게 됩니다.

import java.util.ArrayList;

public class test{
	public static void main(String[] args){
    	
        int[] numbers = new int[3];
        
        numbers[0] = 1;
        numbers[1] = 2;
        numbers[2] = 3;
        numbers[3] = 4; // error
        // 배열의 크기를 넘어서기 때문에 오류발생
        
        
        ArrayList<Integer> nums = new ArrayList<>();
        nums.add(1);
        nums.add(2);
        nums.add(3);
        nums.add(4);
        nums.add(5);
        // 배열의 크기가 고정되어 있지 않기 때문에
        // 원하는 만큼 data를 삽입할 수 있음
    }
}

 

Array와 ArrayList의 차이점(2)
사용가능한 데이터 타입

 

두 번째 차이점은 사용가능한 데이터 타입입니다.

 

ArrayList의 경우에 Array와 달리 int, boolean, double과 같은

기본형 primitive type 데이터 타입을 사용할 수 없습니다.

 

ArrayList의 경우 Integer, Double과 같이 Wrapper를 사용한

Object element만 데이터 타입으로 사용가능합니다.

import java.util.ArrayList;

public class test{
	public static void main(String[] args){
    	
        // Array
        // 기본형 primitive type 사용가능
        int[] numbers = {1, 2 ,3};
        
        // ArrayList
        // 기본형 primitive type 사용불가
        ArrayList<Integer> ns = new ArrayList<>();
    }
}

 

Array와 ArrayList의 차이점(3)
데이터 관리

 

Array와 ArrayList에서 변수를 배열에 집어넣고 수정하고 삭제하는

등등의 키워드가 각각 다릅니다.

 

이는 이번글에서 주로 다루고자 하는 내용이 아니기에 하단 링크 글들을

참고부탁드립니다!

 

- Array

https://jaythecode.tistory.com/9

 

자바(JAVA) 기초 함께 알아보자(9) - 배열(Array)

지난번 while반복문에 이어서 이번글에서는 배열(Array)에 대해서알아보겠습니다. 추후에 Arraylist라는 것을 알아볼텐데 Array와 Arraylist는다른 개념이니 주의해주세요! 배열(Array) 먼저 배열을 이해

jaythecode.tistory.com

 

- ArrayList

https://jaythecode.tistory.com/16

 

자바(JAVA) 기초 함께 알아보자(16) - ArrayList(배열)

지난번에 캡슐화(Encapsulation)에 이어서 이번글에서는ArrayList에 대해서 알아보겠습니다. ArrayList에 대해서 알아보기 위해서는 Array에 대해서알아야합니다. 혹시 기억이 나지 않으시는 분들은 아

jaythecode.tistory.com

 

지금까지 Array와 ArrayList의 차이점에 대해서 알아보았습니다.

 

여기까지 보신 분들이라면 한 가지 의문점이 생기실 수 있습니다.

"그럼 그냥 배열의 길이를 걱정 안 해도 되는

ArrayList를 항상 사용하면 되는 거 아니야?"

 

그럼 이제 그 의문점에 대한 답을 알아보도록 하겠습니다.

 

먼저 그러려면 ArrayList의 작동방식에 대해 좀 더 살펴보아야 합니다.

 

ArrayList는 과연 처음부터 배열의 크기가 정해져 있지 않은 걸까요?

정답은 "그렇지 않다" 입니다.

 

ArrayList를 선언하는 순간 default정해진 크기 10을 가지게 되고

그 크기를 넘어서는 순간 배열의 크기가 다시 조정되는 것입니다.

참고로 조정되는 값은 이전 크기의 1.5배입니다.

 

자 그럼 성능면에서 Array와 ArrayList 무엇이 더 빠를까요?

 

맞습니다, Array가 성능면에서 우위를 점하게 됩니다.

ArrayList의 크기가 달라지는 순간 이전 배열의 요소들을

복사해서 새로운 배열을 만들어 내기 때문에

이런 과정을 거치지 않는 Array보다 성능이 저하됩니다.

 

따라서 배열의 크기를 알고 있다면 Array를 써주는 것이

성능면에서 더 빠른 처리속도를 가집니다.

 

지금까지 Array와 ArrayList의 차이점에 대해서 알아보았습니다.

 

지금 과정에서는 유의미한 처리속도나 성능차이를 기대하긴 어렵지만

기본부터 개념을 확실하게 알고 가면 나중에 더 좋은 개발자가

될 수 있다고 생각합니다!

 

그럼 다음 글에서는 또 다른 자료구조인 Hashmap에 대해서 알아보겠습니다.