Java

[Java] ArrayList

비번변경 2026. 3. 4. 09:57

개요

이번 글에서는 Java에서 매우 흔하게 사용하고 있는 ArrayList에 대해서 정리한다.

 

 

ArrayList

ArrayList는 Array의 불편함을 해소하기 위해 나온 개념으로, 연속적인 데이터의 리스트이다.

내부적으로 Object[]을 이용하고 있으며, 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 배열과 다르게 크기가 가변적(동적 할당)이지만, 배열의 크기가 가득 찰 때마다 copy 하는 방식으로 크기를 조정하기 때문에 지연이 발생할 수 있다. 데이터를 중간에 삽입하거나 삭제하는 경우에는 리스트 내 공간 조정으로 인해 요소의 위치가 앞뒤로 이동하기 때문에 동작이 느리다.

 

 

사용법

ArrayList를 사용할 때는 패키지를 import 해야 한다.

import java.util.ArrayList;

 

아래 내용은 기본적인 ArrayList 사용법을 나열한 것이다.

 

생성

ArrayList는 빈 리스트를 생성하거나, 길이를 사전에 지정하거나 다른 컬렉션으로 초기화하는 방식으로 생성할 수 있다.

// 타입설정 Integer 객체만 적재가능
ArrayList<Integer> members = new ArrayList<>();

// 초기 용량(capacity)지정
ArrayList<Integer> num3 = new ArrayList<>(10);

// 배열을 넣어 생성
ArrayList<Integer> list2 = new ArrayList<>(Arrays.asList(1,2,3));

// 다른 컬렉션으로부터 그대로 요소를 받아와 생성
ArrayList<Integer> list3 = new ArrayList<>(list2);

 

요소 추가

요소는 제네릭으로 명시한 타입의 데이터만 추가할 수 있다. 참고로 capacity는 공간 크기이고, size는 리스트 내 요소의 개수에 해당한다.

// 리스트의 마지막에 객체 추가
list.add(VALUE);

// 전달받은 컬렉션의 모든 객체를 저장
list.addAll(VALUES);

 

 

요소 추가 - 위치 지정

add 나 addAll 메서드에 index를 전달하여 데이터를 저장할 위치까지 지정한다.

다만 로직 상 다른 요소의 위치를 변경하기 때문에 성능이 좋진 않다. 또한 리스트의 크기를 초과하는 인덱스를 지정할 수는 없다.

// 리스트의 마지막에 객체 추가
list.add(INDEX, VALUE);

// 전달받은 컬렉션의 모든 객체를 저장
list.addAll(INDEX, VALUES);

 

요소 삭제

데이터를 삭제할 때는 remove나 clear 등을 사용한다. remove는 특정 위치나 특정 객체를 지정할 수 있고, removeAll을 사용하면 전달한 컬렉션과 동일한 객체를 모두 삭제한다. clear 같은 경우에는 리스트 내 모든 요소를 삭제한다.

list.remove(INDEX);

list.remove(VALUE);

list.removeAll(VALUES);

list.clear();

 

요소 조회

ArrayList는 리스트가 비어있는지, 객체가 리스트에 존재하는지, 어느 위치에 존재하는지 등을 확일할 수 있는 메서드를 제공한다.

// 리스트가 비었는지 확인
list.isEmpty();

// 객체의 포함 여부 확인
list.contains(VALUE);

// 객체의 위치 조회
list.indexOf(VALUE);

 

요소 얻기

요소를 얻을 때는 get 메서드를 사용한다.

list.get(INDEX);

 

 

 

참고 문서

🧱 자바 ArrayList 구조 & 사용법 정리

https://www.w3schools.com/java/java_arraylist.asp

[Java] 자바 ArrayList 

 

728x90