[Java 입문] ArrayList 사용법 배열과의 차이점
본문 바로가기
카테고리 없음

[Java 입문] ArrayList 사용법 배열과의 차이점

by 지식창고공유 2024. 2. 29.

Java ArrayList 사용법 배열과의 차이점
Java ArrayList 사용법 배열과의 차이점

ArrayList란?

Java에서 여러 값을 모아 관리하는 ArrayList는 배열과 함께 자주 사용되는 ArrayList는 업무 시스템, 게임, 앱 개발 등 다양한 분야에서 많이 사용되고 있습니다. 오늘 포스팅에서는 Java의 ArrayList 사용법과 배열과의 차이점에 대해 알아보겠습니다.

 

ArrayList는 여러 요소를 담을 수 있는 상자입니다.

Java의 ArrayList는 크기가 정해져 있지 않은 배열과 같다고 생각하면 됩니다. ArrayList는 여러 개의 값을 관리할 때 사용합니다.

 

ArrayList와 배열의 차이점

ArrayList와 배열은 여러 요소를 모아 관리할 수 있다는 점에서 비슷한 기능을 가지고 있지만, 차이점도 있습니다. 실제로 어떤 차이가 있을까?

 

ArrayList는 크기(요소 수)가 가변적이다.

배열에는 저장할 수 있는 요소의 크기가 정해져 있습니다. 따라서 미리 정해진 크기를 초과하는 요소를 저장하면 IndexOutOfBoundsException 에러가 발생합니다.

반면 ArrayList는 요소의 크기가 정해져 있지 않습니다. 요소 개수의 상한을 신경 쓰지 않고 값을 계속 추가할 수 있습니다.

 

선언 방법이 다르다

ArrayList와 배열은 기능적인 특징은 비슷하지만, 선언 방법에 있어서는 크게 다른데, ArrayList와 배열의 선언 방법을 각각 살펴보겠습니다.

 

[ArrayList 선언하기]

List<String> a = new ArrayList<>();

[배열 선언]

String[] a = new String[5];

위의 샘플 코드를 보면 알 수 있듯이 요소 수가 가변적인 ArrayList는 선언 시 리스트의 크기를 지정할 필요가 없는 반면, 배열은 선언 시 요소 수를 반드시 지정해야 합니다.

 

ArrayList는 프리미티브 타입을 넣을 수 없다.

Java의 ArrayList에는 프리미티브 타입(int, boolean 등의 값 타입)을 넣을 수 없습니다. ArrayList의 요소에 프리미티브 타입의 값을 저장하려면 프리미티브 타입에 해당하는 래퍼 클래스를 지정해야 합니다.

 

예를 들어, 프리미티브 타입인 int로 ArrayList를 선언할 경우, int에 해당하는 래퍼 클래스의 Integer를 타입으로 지정합니다. 실제 예제를 살펴보겠습니다.

List < Integer > a = new ArrayList <>();

 

Note
프리미티브 타입은 기본 데이터 타입이라고도 하며, 변수는 데이터 자체를 나타내며 동작(메서드)을 갖지 않습니다. 구체적으로 다음과 같은 데이터 타입을 프리미티브 타입이라고 합니다.
boolean, char, byte, short, int, long, float, double
String은 프리미티브 타입이 아닙니다.

 

 

ArrayList 초기화

ArrayList를 초기화하는 방법을 설명하겠습니다. ArrayList의 선언 방법은 앞에서 조금 다루었지만, 조금 더 자세히 설명하겠습니다.

 

구문

Java의 ArrayList를 초기화하는 구문은 다음과 같으며, ArrayList는 'java.util' 하위 패키지에 속한 클래스이므로, 파일 시작 부분에서 필요한 클래스를 import합니다.

 

4번째 줄의 산괄호 안에는 ArrayList에 요소에 넣을 데이터 타입을 지정합니다.

import java . util . List ;
import java . util . ArrayList ;
 
List <type> 변수 이름 = new ArrayList <>();

 

요소를 지정하여 ArrayList 초기화하기

ArrayList를 초기화할 때, 안에 넣을 요소도 함께 지정하여 초기화할 수 있습니다.

 

초기화 블록 구문


익명 클래스와 초기화 블록 구문을 사용하여 ArrayList 초기화 시 요소에 넣을 값을 일괄적으로 설정할 수 있습니다.

import java . util . ArrayList ;
import java . util . List ;
 
List < String > 변수 이름 = new ArrayList <>() {     
    {
        add ( "Apple" );
        add ( "Google" );
    }
};

 

Arrays 클래스의 asList로 요소를 지정하여 초기화하기

또 다른 방법으로는 asList 함수를 사용해도 ArrayList 초기화 시 요소들을 일괄적으로 요소에 넣을 수 있습니다.

import java . util . ArrayList ;
import java . util . Arrays ;
import java . util . List ;
 
List < String > 변수 이름 = new ArrayList < String >( Arrays . asList ( "Apple" , "Google" ));

 

ArrayList에 요소 설정하기

ArrayList에 요소를 추가, 갱신, 삭제하는 방법을 설명하겠습니다.

 

요소 1건 추가하기(add)

ArrayList에 요소를 1건 추가하려면 add 메서드를 사용하며, add 메서드로 추가한 값은 리스트의 맨 뒤에 추가됩니다.

list . add ( "값" );

 

여러 요소를 한꺼번에 추가하기(addAll)

여러 요소를 한꺼번에 추가하려면 addAll 메서드를 사용합니다. 다음 예제는 ArrayList의 내용을 다른 ArrayList에 일괄적으로 추가하고 있습니다.

List < String > list1 = new ArrayList <>();  
list1 . add ( "apple" );
list1 . add ( "google" );
list1 . add ( "microsoft" );
 
List < String > list2 = new ArrayList <>();  
list2 . addAll ( list1 );
 
System . out . println ( list2 );

[실행 결과]

[ apple , google , microsoft ]

 

요소의 값 업데이트하기

ArrayList의 임의의 요소를 업데이트하는 방법을 알아봅시다.

 

인덱스 지정으로 요소 업데이트

인덱스 지정으로 요소의 값을 다시 작성하려면 다음과 같이 작성합니다. 아래 예제는 ArrayList의 첫 번째 요소를 다시 작성하고 있습니다.

List < String > list = new ArrayList < String >( Arrays . asList ( "Apple" , "Google" ));   
 
list [ 0 ] = "Microsoft" //-> "Apple"이 "Microsoft"로 바뀝니다.

 

Note
인덱스는 0 시작하는 것에 주의.Java를 포함한 대부분의 프로그래밍 언어에서는 배열이나 Array List의 인덱스는 0~시작합니다.그렇기 때문에 첫 번째 요소는 '0', 두 번째 요소는 '1'과 같이 지정을 합니다.

 

set 메서드로 요소 업데이트하기

요소의 값을 다시 작성하는 또 다른 방법으로는 set 메서드가 있습니다. 이 메서드는 변경할 요소의 인덱스와 값을 인수로 받아 요소의 값을 다시 작성합니다.

변수명. set (인덱스, 변경하는 값)

 

요소 1개 삭제하기(remove)

ArrayList의 요소를 삭제하는 방법도 살펴보겠습니다. 인덱스를 지정하여 ArrayList의 특정 요소를 삭제하려면 다음과 같이 작성합니다.

List < String > list = new ArrayList < String >( Arrays . asList ( "Apple" , "Google" ));   
 
list . remove ( 0 ); // "Apple"의 요소가 삭제됨

 

모든 요소 삭제하기(clear)

ArrayList의 요소를 모두 삭제하려면 clear 메서드를 사용합니다.

list . clear ();

 

ArrayList의 요소로부터 값 가져오기

ArrayList에 추가한 요소의 값을 가져오는 방법에 대해서 알아보겠습니다

.

인덱스 지정으로 가져오기

인덱스 지정으로 요소의 값을 가져오려면 다음과 같이 작성합니다.

List < String > list = new ArrayList < String >( Arrays . asList ( "Apple" , "Google" ));   
 
list [ 0 ]; //-> "Apple"을 얻을 수 있습니다

 

get 메서드로 요소에서 값 가져오기

set 메서드에서 값을 다시 쓰는 것과 반대로 get 메서드에서는 요소의 값을 가져올 수 있습니다.

List < String > list = new ArrayList < String >( Arrays . asList ( "Apple" , "Google" ));   
 
list . get ( 0 ); //-> "Apple"을 얻을 수 있다

 

ArrayList를 for로 반복 처리하기

ArrayList에 요소를 추가한 후에는 추가한 요소를 반복적으로 처리할 경우가 많을 것입니다. 아래 글에서 배열이나 ArrayList를 for로 반복하는 방법을 소개하고 있으니, 자세히 알고 싶은 타입은 참고해보시기 바랍니다.

 

 

[Java 입문] for 문에 대하여

Java 언어의 반복 처리 컴퓨터의 프로그램 처리는 크게 순차 처리, 분기 처리, 반복 처리라는 세 가지 종류의 처리로 구성되어 있습니다. 물론 Java 언어도 예외는 아니며, 자바 언어에도 반복 처리

pgmovestep.tistory.com