728x90
기존 배열의 단점과 ArrayList
- 우리가 앞에서 배운 기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작합니다.
- 이런 경우를 한번 생각해 보겠습니다.
- 처음에 100명의 학생을 위한 프로그램을 개발했는데, 어느 순간 학생 수가 100명이 넘었습니다. 배열을 사용하는 중에는 배열 길이를 변경할 수 없기 때문에 코드를 수정해야 합니다.
- 혹은 중간에 학생 한 명이 전학을 갔습니다. 배열은 중간에 있는 요소를 비워 둘 수 없으므로 배열 요소 위치를 변경해야 합니다.
- 이 두 경우 모두 배열을 하나하나 수정하려면 힘들고 복잡합니다.
- 그래서 자바는 객체 배열을 좀 더 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공합니다.
- ArrayList 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공하므로 사용 방법만 알아 두면 편리하게 사용할 수 있습니다.
ArrayList 클래스의 주요 메서드
- ArrayList 클래스에는 이미 만들어져 있는 메서드가 많이 있습니다.
- 가장 많이 사용하는 메서드 위주로 설명하겠습니다.
메서드 | 설명 |
boolean add(E e) | 요소 하나를 배열에 추가합니다. E는 요소의 자료형을 의미합니다. |
int size( ) | 배열에 추가된 요소 전체 개수를 반환합니다. |
E get(int index) | 배열의 index 위치에 있는 요소 값을 반환합니다. |
E remove(int index) | 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환합니다. |
boolean isEmpty( ) | 배열이 비어 있는지 확인합니다. |
- add( ) 메서드를 이용하면 배열 길이와 상관없이 객체를 추가할 수 있습니다.
- 만약 배열의 길이가 추가될 요소 개수보다 부족하다면 배열의 길이를 더 증가시키도록 구현되어 있습니다.
- 또한 배열 중간의 어떤 요소 값이 제거되면 그 다음 요소 값을 하나씩 앞으로 이동하는 코드도 이미 구현되어 있습니다.
- 이렇게 자바에서 제공하는 라이브러리를 활용하면 좀 더 편리하게 프로그래밍할 수 있습니다.
Java의 공식 문서, JavaDoc 이용하기
- ArrayList 클래스에는 여러 메서드가 있습니다.
- 이들 메서드 모두를 지금 공부할 수는 없습니다.
- 나중에 공부하다 모르는 내용이 있을 때 가장 좋은 방법은 자바에서 제공하는 공식 문서인 JavaDoc 을 찾아보는 것입니다.
- ArrayList 에 대해 궁금하다면 ArrayList 를 이클립스 편집 창에 입력한 다음 F1 키를 눌러보세요.
- ArrayList 에 대한 JavaDoc 을 확인할 수 있습니다.
ArrayList 클래스 활용하기
- ArrayList 를 사용할 때 어떤 자료형 객체를 사용하여 프로그래밍할 것인지 선언할 수 있습니다.
- ArrayList 를 사용하는 기본형식은 아래와 같습니다.
ArrayList<E> 배열이름 = new ArrayList<E>();
- <E>와 같은 형태를 제네릭 generic 자료형 이라고 합니다. 제네릭 자료형에 대해서는 추후에 자세히 배우게 됩니다.
- 배열을 선언하는 부분의 < > 안에 사용할 객체의 자료형 E 를 쓰면 됩니다.
- 예를 들어 Book 클래스형을 자료형으로 사용해서 ArrayList 배열을 생성한다면 다음과 같습니다.
ArrayList<Book> library = new ArrayList<Book>();
- ArrayList 는 java.util 패키지에 구현되어 있는 클래스입니다.
- 현재 프로그램에는 ArrayList 를 사용하기 위한 java.util 패키지가 포함되어 있지 않기 때문에 컴파일러에게 ArrayList 가 어디에 구현되어 있는지 알려줘야 합니다.
- 이렇게 내 코드에 없는 클래스를 가져와 사용할 때 이 클래스가 어디에 구현되어 있다고 알려주기 위해 코드 맨 위에 선언하는 것을 임포트 import 한다고 합니다.
- 즉 ArrayList 를 사용하려면 자바 클래스를 선언한기 전에 import java.util.ArrayList; 문장을 반드시 써주어야 합니다.
- 앞에서 만든 Book 클래스 배열 예제를 ArrayList 클래스를 활용하여 구현해 보겠습니다.
package array;
import java.util.ArrayList; // ArrayList 클래스 import
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Book> library = new ArrayList<Book>(); // ArrayList 선언
library.add(new Book("태백산맥", "조정래")); // add() 메서드로 요소 값 추가
library.add(new Book("데미안", "헤르만 헤세"));
library.add(new Book("어떻게 살 것인가", "유시민"));
library.add(new Book("토지", "박경리"));
library.add(new Book("어린왕자", "생텍쥐페리"));
for (int i = 0; i < library.size(); i++) { // size() 메서드로 배열의 길이 반환
Book book = library.get(i);
book.showBookInfo();
}
System.out.println();
System.out.println("=== 향상된 for 문 사용 ==="); //
for(Book book : library) {
book.showBookInfo();
}
}
}
- 기존 배열에서는 [ ] 안에 배열 전체 길이를 미리 지정해야 했습니다.
- 하지만 ArrayList 를 생성할 때는 미리 지정할 필요 없이 add( ) 메서드를 사용해 생성자만 호출하면 됩니다.
- ArrayList 는 객체 배열이므로 add( ) 메서드를 통해 인스턴스를 생성하여 배열의 요소로 추가합니다.
- 그 다음 for 구문과 get( ) 메서드를 통해 생성한 library ArrayList 배열에 추가된 요소들을 가져와 출력합니다.
- ArrayList 의 length 는 size( ) 메서드를 활용합니다.
'[그린컴퓨터] Server > JAVA(객체 지향 프로그래밍)' 카테고리의 다른 글
상속이란 { 상속이란, 클래스의 상속, 상속을 사용하여 고객 관리 프로그램 구현하기 } (0) | 2023.05.29 |
---|---|
배열 응용 프로그램 { Student 클래스 구현하기, 테스트 클래스 구현 } (0) | 2023.05.25 |
다차원 배열 { 다차원 배열이란, 이차원 배열 } (0) | 2023.05.25 |
배열이란? { 배열의 필요성, 배열이란, 배열 선언과 초기화, 배열 사용하기, 문장 저장 배열 만들기, 객체 배열 사용하기, 배열 복사하기, 향상된 for문과 배열} (0) | 2023.05.25 |
간단한 카페 프로그램 개발해보기(객체 간 협업, 참조변수 활용) {개발의 이유, 질문} (0) | 2023.05.24 |