기존 배열의 단점과 ArrayList
기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작한다.
그런데 만약 100명의 학생을 위한 프로그램을 개발했는데 어느 순간 학생 수가 100명이 넘었다면
배열을 사용하는 중에는 배열 길이를 변경할 수 없기 때문에 코드를 수정해야 한다.
혹은 중간에 학생 한 명이 전학을 간다면 배열은 중간에 있는 요소를 비워 둘 수 없으므로 배열 요소 위치를 변경해야 한다.
그래서 자바는 객체 배열을 좀 더 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공한다.
ArrayList 클래스의 주요 메서드
ArrayList 클래스에는 이미 만들어져 있는 메서드가 많이 있다.
- 그중 프로그램을 만들 때 가장 많이 사용하는 메서드 위주
| 메서드 | 설명 |
| boolean add(E e) | 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미한다. |
| int size() | 배열에 추가된 요소 전체 개수를 반환한다. |
| E get(int index) | 배열의 index 위치에 있는 요소 값을 반환한다. |
| E remove(int index) | 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환한다. |
| boolean isEmpty() | 배열이 비어 있는지 확인한다. |
add() 메서드를 이용하면 배열 길이와 상관없이 객체를 추가할 수 있다.
만일 배열의 길이가 추가될 요소 개수보다 부족하다면 배열을 더 키울 수 있도록 구현되어 있다.
또 배열 중간의 어떤 요소 값이 제거되면 그다음 요소 값을 하나씩 앞으로 이동하는 코드도 이미 구현되어 있다.
ArrayList 클래스 활용하기
ArrayList를 사용하는 기본 형식
ArrayList<E> 배열이름 = new ArrayList<E>();
배열을 선언하는 부분의 <> 안에 사용할 객체의 자료형(E)을 쓰면 된다.
ArrayList는 java.util 패키지에 구현되어 있는 클래스이다.
ArrayList를 사용하기 위해서는 컴파일러에게 ArrayList가 어디에 구현되어 있는지 알려줘야 한다.
이렇게 내 코드에 없는 클래스를 가져와 사용할 때 이 클래스가 어디에 구현되어 있다고 알려주기 위해 코드 맨 위에 선언하는 것을 임포트(import)한다고 한다.
즉 ArrayList를 사용하려면 자바 클래스를 선언하기 전에 import java.util.ArrayList; 문장을 써야한다.
- Book 클래스 배열 예제를 ArrayList 클래스를 활용하여 구현
package array;
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args){
ArrayList<Book> library = new ArrayList<Book>();
library.add(new Book("태백산맥", "조정래"));
library.add(new Book("데미안", "헤르만 헤세"));
library.add(new Book("어떻게 살 것인가", "유시민"));
library.add(new Book("토지", "박경리"));
library.add(new Book("어린왕자", "생텍쥐페리"));
for (int i = 0; i < library.size(); i++) {
Book book = library.get(i);
book.showInfo();
}
System.out.println();
System.out.println("===== 향상된 for문 ======");
for (Book book : library){
book.showInfo();
}
}
}

기본 배열에서는 [ ] 안에 배열 전체 길이를 미리 지정해야했다.
하지만 ArrayList를 생성할 때는 미리 지정할 필요 없이 add() 메서드를 사용해 생성자만 호출하면 된다.
ArrayList는 객체 배열이므로 9~13행과 같이 각 인스턴스를 생성해서 배열의 요소로 추가한다.
15~18행은 ArrayList에 있는 인스턴스를 순서대로 가져와서 출력한다.
요소를 하나 가져오는 메서드는 get() 이다.
매개변수로 몇 번째 요소를 가져올 것인지 지정한다.
15행 for문을 보면 배열에 추가된 요소 개수만큼만 출력하기 위해 size() 메서드를 사용했다.
size() 메서드는 배열에 유효한 값이 저장된 요소 개수를 반환한다.
'JAVA' 카테고리의 다른 글
| 상속 (1) | 2024.12.19 |
|---|---|
| ArrayList 사용한 배열 응용 프로그램 (2) | 2024.12.19 |
| 다차원 배열 (0) | 2024.12.18 |
| 배열, 향상된 for문 (1) | 2024.12.18 |
| 싱글톤 패턴 (1) | 2024.12.17 |