Back-End/Java

[Back-End][Java] 27. ArrayList

nanee_ 2021. 9. 9. 23:39
728x90
반응형
SMALL

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를 누적으로 더해서 출력해 주었다. 

 

 

 

 

 

 

 

728x90
반응형
LIST