TIL

Java 리스트(List) 활용 & 반복문 리팩토링

chungmani 2026. 6. 23. 13:10

1. 기본 구조 - List 사용

먼저 상품들을 관리하기 위해 List를 사용함.

List<Product> products = new ArrayList<>();

Product product1 = new Product("Galaxy S25", 1200000, "최신 안드로이드 스마트폰", 10);
Product product2 = new Product("iPhone 16", 1350000, "Apple의 최신 스마트폰", 10);

products.add(product1);
products.add(product2);
 

2. 향상된 for문으로 출력하기

처음에는 향상된 for문을 사용해서 데이터를 출력함

for (Product item : products) {
    System.out.println(
        item.getProductName() + " ㅣ " +
        item.getPrice() + "원 ㅣ " +
        item.getDescription()
    );
}
 

 장점

  • 코드가 간결함
  • 읽기 쉬움

 단점

  • 인덱스 접근이 불가능 (번호 출력 어려움)

3. 일반 for문으로 변경 (인덱스 활용)

상품 번호를 출력해야 해서 일반 for문으로 변경

for (int i = 0; i < products.size(); i++) {
    Product item = products.get(i);

    System.out.println(
        (i + 1) + ". " +
        item.getProductName() + " ㅣ " +
        item.getPrice() + "원 ㅣ " +
        item.getDescription()
    );
}
 

 장점

  • 인덱스 활용 가능 (번호 출력 가능)
  • 메뉴 구조 만들 때 유리

4. switch문으로 선택 처리 시도

처음에는 선택 처리를 switch문으로 작성하려고..이딴식으로 함 ㅋㅋ

switch (choice) {
	case 1 : 
    	System.out.println("1. " + products.get(0).getProductName() + " ㅣ " + products.get(0).getPrice() + "원 ㅣ " + products.get(0).getDescription());
        break;
    case 2 : 
    	System.out.println("2. " + products.get(1).getProductName() + " ㅣ " + products.get(1).getPrice() + "원 ㅣ " + products.get(1).getDescription());
        break;
 

문제점

  • 코드가 길어짐
  • 상품 개수가 늘어나면 유지보수 어려움

5. if문 + 리스트 index 활용으로 리팩토링

최종적으로는 if문 + 리스트 index를 활용해서 구조를 개선함

if (choice == 0) {
    return;
} else if (choice > products.size()) {
    System.out.println("올바른 숫자를 입력해주세요.");
} else {
    Product selected = products.get(choice - 1);

    System.out.println(
        selected.getProductName() + " ㅣ " +
        selected.getPrice() + "원 ㅣ " +
        selected.getDescription()
    );
}
 

장점

  • switch보다 확장성 좋음
  • 코드 중복 제거
  • 리스트 구조와 자연스럽게 연결됨

 

마무리

이번 프로젝트를 통해 단순히 코드를 작성하는 것보다
구조를 어떻게 설계하느냐가 더 중요하다는 것을 느꼈다.

특히 List + 반복문 조합은 앞으로도 계속 쓰게 될 핵심 패턴이라
이번 리팩토링 경험이 꽤 큰 도움이 될 것 같다.