배열을 사용하는 중에는 배열 길이를 변경할 수 없기 때문에 코드를 수정해야 하는데 코드를 수정하는 일은 상당히 번거롭다. 자바는 객체 배열을 좀 더 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공한다.
ArrayList 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공하므로 사용 방법만 알아두면 편리하게 사용할 수 있다.
메서드 | 설명 |
boolean add(E e) | 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미한다. |
int size() | 배열에 추가된 요소 전체 개수를 반환한다. |
E get(int index) | index 위치에 있는 요소 값을 반환한다. |
E remove(int index) | 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환한다. |
boolean isEmpty() | 배열이 비어 있는지 확인한다. |
add() 메서드를 이용하면 배열 길이와 상관없이 객체를 추가할 수 있다. 만일 배열의 길이가 추가될 요소 개수보다 부족하다면 배열을 더 키울 수 있도록 구현되어 있다. 또 배열 중간의 어떤 요소 값이 제거되면 그다음 요소 값을 하나씩 앞으로 이동하는 코드도 이미 구현되어 있다. 이렇게 자바에서 제공하는 라이브러리를 활용하면 좀 더 편리하게 프로그래밍할 수 있다.
ArrayList를 사용하는 기본 형식
ArrayList<E> 배열 이름 = new ArrayList<Book>();
ArrayList<Book> library = new ArrayList<Book>();
배열을 선언하는 부분의 <>안에 사용할 객체의 자료형(E)를 쓰면 된다.
ArrayList는 java.util 패키지에 구현되어 있는 클래스로, 내가 만든 프로그램에는 java.util 패키지가 포함되어 있지 않기 때문에 ArrayList를 사용하기 위해서는 컴파일러에게 ArryList가 어디에 구현되어 있는지 알려줘야 한다. 이렇게 내 코드에 없는 클래스를 가져와 사용할 때 이 클래스가 어디에 구현되어 있다고 알려주기 위해 코드 맨 위에 선언하는 것을 임포트(import) 한다고 한다. 즉, ArryList를 사용하려면 자바 클래스를 선언하기 전에 import java.util.ArryList;문장을 반드시 써 주어야 한다.
[실습] ArrayList 클래스 사용하기
package array;
import java.util.ArrayList; //ArrayList class import
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.showBookinfo();
}
System.out.println();
System.out.println("=== 향상된 for문 사용===");
for(Book book : library) {
book.showBookinfo();
}
}
}
기본 배열에서는 []안에 배열 전체 길이를 미리 지정해야 했지만, ArrayList를 생성할 때는 미리 지정할 필요 없이 add() 메서드를 사용해 생성자만 호출하면 된다.
[실습] ArrayList 활용하기 - 나 혼자 코딩
package array;
import java.util.ArrayList;
public class ArrayListTest2 {
public static void main(String[] args) {
ArrayList<Student> student = new ArrayList<Student>();
student.add(new Student(1001, "James"));
student.add(new Student(1002, "Tomas"));
student.add(new Student(1003, "Edward"));
for(int i = 0; i < student.size(); i++) {
Student st = student.get(i);
st.showStudentInfo();
}
}
}
'Language > Java' 카테고리의 다른 글
[Java] 상속에서 클래스 생성과 형 변환 (0) | 2022.11.20 |
---|---|
[Java] 상속이란? (0) | 2022.11.17 |
[Java] 다차원 배열 (0) | 2022.11.12 |
[Java] 배열이란? (0) | 2022.11.07 |
[Java] static 응용 - 싱글톤 패턴 (0) | 2022.11.03 |