언어(Language)/Java

[Java] 자바 ArrayList 클래스 개념 정리 및 활용

잇트루 2022. 9. 21. 04:00
반응형

ArrayList

ArrayList는 List 인터페이스를 구현한 클래스로 컬렉션 프레임워크에서 가장 많이 사용된다.

기능적으로는 Vector와 동일하지만, 기존의 Vector를 개선한 것으로 주로 ArrayList를 사용한다.

 

ArrayList에 객체를 추가하면 객체가 인덱스로 관리된다는 점에서 배열과 유사하다. 그러나 배열은 생성될 때 크기가 고정되며, 크기를 변경할 수 없다.

하지만 ArrayList는 저장 용량을 초과하여 객체들이 추가되면, 자동으로 저장용량이 늘어나게 된다.

또한 List 자료구조의 특성을 이어받아 데이터가 연속적으로 존재하여 순서를 유지한다.

 

ArrayList의 생성

List<타입 매개변수> 객체이름 = new ArrayList<타입 매개변수>(초기 저장 용량);

 

ArrayList를 생성하기 위해서는 저장할 객체 타입을 제네릭으로 표기하고 기본 생성자를 호출한다.

// 크기를 지정하지 않은 ArrayList, 기본 값 10
List<String> arrayList1 = new ArrayList<String>();

// 크기를 30으로 지정한 ArrayList
List<String> arrayList2 = new ArrayList<String>(30);

ArrayList에 객체를 추가하면 인덱스 0부터 차례대로 저장된다. 또한, 특정 인덱스의 객체를 제거하면, 순서를 유지하기 때문에 저장된 객체의 인덱스가 1씩 감소하여 빈자리를 차지하게 된다.

따라서, 객체 추가와 제거가 빈번한 기능에는 LinkedList를 사용하는 것이 좋다.

 

ArrayList에 객체를 추가, 검색, 삭제하는 예제

import java.util.ArrayList;
import java.util.List;

public class ArrayListEx {
    public static void main(String[] args) {
        // ArrayList 생성
        List<String> list = new ArrayList<String>();

        // String 타입의 데이터를 ArrayList에 추가
        list.add("Hello");
        list.add("Java");
        list.add("List");

        // 저장된 객체 수 얻기
        int size = list.size();

        // 0번 인덱스의 객체 저장 및 출력
        String hello = list.get(0);
        System.out.println(hello);

        // 저장된 총 객체 수 만큼 조회
        for(int i = 0; i < size; i++) {
            String str = list.get(i);
            System.out.println(str);
        }

        // 0번 인덱스에 저장된 객체 삭제
        list.remove(0);

        // for-each문으로도 사용 가능
        for (String str : list) {
            System.out.println(str);
        }
    }
}

ArrayList에 대한 다른 메서드는 공식 문서에서 찾아볼 수 있다.

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

 

ArrayList (Java Platform SE 8 )

Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is

docs.oracle.com

 

반응형