[Back-End][Java] 27. ArrayList
ArrayList
객체 배열을 좀 더 효율적으로 관리하기 위해서 자바에서 제공해 주는 java.util 패키지의 클래스로,
기존의 배열과는 다르게 공간의 크기를 먼저 선언하지 않아도 되고, 데이터 타입도 미리 정해주지 않아도 된다.
선언방법
ArrayList<E> 배열명 = new ArrayList<E>();
(뒤의 <E>는 생략하고 ArrayList<>(); 로 작성해도 무관하다.)
E는 객체를 의미한다. 배열에 넣고자하는 값들의 타입을 입력하면 된다.
없다면 <E> 이렇게 넣고, 나중에 원하는 값을 넣어주면 된다.
이것이 ArrayList 의 큰 장점이다.
구현되어있는 메서드들
관련 메서드 | 기능 |
.add(데이터) .add(인덱스, 데이터) |
값을 추가한다. |
.get(인덱스) | 값을 불러온다. |
.remove(인덱스) | 값을 삭제한다. |
.size() | 배열의 공간의 크기 값을 가져온다. |
.set(인덱스, 데이터) | 해당 인덱스에 입력한 데이터로 수정한다. |
구현되어 있는 메서드로 CRUD(Create, Read, Update, Delete)가 가능하다.
예제 코드
Apparel.java
public class Apparel {
// 멤버변수
int id;
String type;
int price;
// 생성자
public Apparel(int id, String type, int price) {
this.id = id;
this.type = type;
this.price = price;
}
}
Apparel 클래스에서
id(품목번호), type(종류), price(가격)의 변수를 생성하고,
매개변수를 받아서 this 멤버변수에 저장해주는 생성자를 만들어 주었다.
ArrayListTest.java
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
// 객체 생성
Apparel apparel1 = new Apparel(1, "neat", 28_000);
Apparel apparel2 = new Apparel(2, "dress", 45_000);
Apparel apparel3 = new Apparel(3, "t-shirt", 19_900);
Apparel apparel4 = new Apparel(4, "jacket", 73_000);
// 선언
ArrayList<Apparel> shoppingCart = new ArrayList<Apparel>();
// 값 추가
shoppingCart.add(apparel1);
shoppingCart.add(apparel2);
shoppingCart.add(apparel3);
// 값 추가
shoppingCart.add(0, apparel4); // 인덱스 번호, 값
// 출력
int total = 0;
System.out.println("**** 장바구니 조회 ****");
for (int i = 0; i < shoppingCart.size(); i++) {
String type = shoppingCart.get(i).type;
int price = shoppingCart.get(i).price;
total += price;
System.out.println((i+1)+". "+ type +" : " + price + " 원");
}
System.out.println("----------------------");
System.out.println("총 금액 : " + total + " 원");
}
}
객체를 여러개 생성해주었다.
ArrayList를 Apparel 객체로 선언을 한 다음,
.add() 메서드로 값을 넣어주었다.
출력 시 for문 안에서 가격의 total 값을 받을 변수를 for문 밖에서, 즉 전역변수로 생성해었다.
for문의 조건식에서 .size()로 배열의 공간의 값을 받아오는데,
이때 기존의 배열과는 다르게 값의 수 만큼의 공간만 가지고 있어서 null값이 없기 때문에
방어적인 코드로 if문을 사용하지 않아도 된다.
오류를 줄일 수 있다.
for문 안에서는 .get() 메서드로 배열의 인덱스에 접근해 각 변수들(type, price)의 데이터를 가지고 왔고,
total 변수에는 price를 누적으로 더해서 출력해 주었다.