Java/[문제] Java
컬렉션 프레임워크 - List
종퐁이
2024. 11. 29. 21:50
문제 1 - 배열을 리스트로 변경하기
- ArrayEx1는 배열을 사용한다. 이 코드를 배열 대신에 리스트를 사용하도록 변경하자
- 다음 코드와 실행 결과를 참고해서 리스트를 사용하는 ListEx1 클래스를 만들어라
package collection.list.test.ex1;
public class ArrayEx1 {
public static void main(String[] args) {
int[] students = {90, 80, 70, 60, 50};
int total = 0;
for (int i = 0; i < students.length; i++) {
total += students[i];
}
double average = (double) total / students.length;
System.out.println("점수 총합: " + total);
System.out.println("점수 평균: " + average);
}
}
< 실행결과 >
점수 총합: 350
점수 평균: 70.0
문제 2 - 리스트의 입력과 출력
- 사용자에게 n개의 정수를 입력받아서 List에 저장하고, 입력 순서대로 출력하자.
- 0을 입력하면 입력을 종료하고 결과를 출력한다.
- 출력시 출력 포맷은 1,2,3,4,5와 같이 , 쉼표를 사용해서 구분하고, 마지막에는 쉼표를 넣지 않아야 한다.
- 실행결과 예시를 참고하자
- 문제는 ListEx2에 풀자
< 실행결과 >
n개의 정수를 입력하세요 (종료 0)
1
2
3
4
5
0
출력
1, 2, 3, 4, 5
문제3 - 합계와 평균
- 사용자에게 n개의 정수를 입력받아서 List에 보관하고, 보관한 정수의 합계와 평균을 계산하는 프로그램을 작성하자
- ListEx3에 작성하자
< 실행결과 예시 >
n개의 정수를 입력하세요 (종료 0)
1
2
3
4
5
0
입력한 정수의 합계: 15
입력한 정수의 평균: 3.0
문제 4 -리스트를 사용한 쇼핑 카드
- ShoppingCartMain 코드가 작동하도록 ShoppingCart 클래스를 완성해라
- ShoppingCart는 내부에 리스트를 사용해야 한다.
< item 클래스 >
package collection.list.test.ex2;
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;
}
}
package collection.list.test.ex2;
public class ShoppingCartMain {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Item item1 = new Item("마늘", 2000, 2);
Item item2 = new Item("상추", 3000, 4);
cart.addItem(item1);
cart.addItem(item2);
cart.displayItems();
}
}
< 실행결과 >
장바구니 상품 출력
상품명:마늘, 합계:4000
상품명:상추, 합계:12000
전체 가격 합:16000
- 다음 배열을 사용한 코드와 비교해 보면 배열보다 리스트를 사용하는 것이 이점이 더 많은 것을 확인할 수 있다.
< 배열과 비교한 리스트의 이점 >
- 자료 구조의 크기가 동적으로 증가한다. 따라서 배열처럼 입력 가능한 크기를 미리 정하지 않아도 된다.
- itemCount와 같이 배열에 몇개의 데이터가 추가 되었는지 추척하는 변수를 제거할 수 있다. 리스트는 size() 메서드를
통해 입력된 데이터의 크기를 제공한다.
[ 참고 - 배열을 사용한 코드와 비교 ]
public class ShoppingCart {
private Item[] items = new Item[10];
private int itemCount;
public void addItem(Item item) {
if (itemCount >= items.length) {
System.out.println("장바구니가 가득 찼습니다.");
return;
}
items[itemCount] = item;
itemCount++;
}
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (int i = 0; i < itemCount; i++) {
Item item = items[i];
System.out.println("상품명:" + item.getName() + ", 합계:" +
item.getTotalPrice());
}
System.out.println("전체 가격 합:" + calculateTotalPrice());
}
private int calculateTotalPrice() {
int totalPrice = 0;
for (int i = 0; i < itemCount; i++) {
Item item = items[i];
totalPrice += item.getTotalPrice();
}
return totalPrice;
}