Java Collection - 리스트로 문제 풀이 - 쇼핑카트
메인에서 사용되도록 Item 클래스를 활용하고 ShoppingCart 클래스에 리스트를 추가해 리팩토링하기
Item.class
public class Item {
private String name;
private int price;
private int quantity;
public Item(String name, int price, int quantity) {
this.name = name;
this.price = price;
this.quantity = quantity;
}
public String getName() {
return name;
}
public int getTotalPrice() {
return price * quantity;
}
}
Main.class
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Item cart1 = new Item("김치", 20000, 1);
Item cart2 = new Item("쌀", 30000,2);
cart.add(cart1);
cart.add(cart2);
cart.displayItems();
}
}
실행 결과
장바구니 목록
상품명: 김치, 총 가격: 20000
상품명: 쌀, 총 가격: 60000
전체 가격:80000
풀이 - ShoppingCart
public class ShoppingCart {
private List<Item> items = new ArrayList<>();
public void add(Item item) {
items.add(item);
}
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (Item item : items) {
System.out.println("상품명: " + item.getName() + ", 총 가격: " + item.getTotalPrice());
}
int totalPrice = 0;
for (Item item : items) {
totalPrice += item.getTotalPrice();
}
System.out.print("전체 가격: " + totalPrice);
}
}
List 장점
ArrayList 보다 List 자료구조를 사용하는 것이 좋은 점을 찾을 수 있다.
- 자료 구조의 크기를 동적으로 증가. 배열처럼 입력 가능한 크기를 미리 계산하지 않아도됨.
- 변수 count 사용으로 배열의 데이터 몇 개인지 추가로 작성되는 이 변수 제거함. 데이터 몇 개인지 가져오려면 size() 메소드를 사용해 크기를 제공
배열로 사용한 ShoppingCart
import java.util.ArrayList;
import java.util.List;
public class ShoppingCart {
private List<Item> items = new Item[10];
private int count;
public void add(Item item) {
if (count >= items.length) {
System.out.println("바구니가 가득합니다.");
}
items[count] = item;
count;
}
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (int i = 0; i < count; i++) {
Item item = items[i];
System.out.println("상품명: " + item.getName() + ", 총 가격: " + item.getTotalPrice());
}
int totalPrice = 0;
for (Item item : items) {
totalPrice += item.getTotalPrice();
}
System.out.print("전체 가격: " + totalPrice);
}
}