1급컬렉션

이규훈·2025년 10월 7일

1급 컬렉션, 쉽게 이해하기

핵심 개념

1급 컬렉션은 리스트나 세트 같은 컬렉션을 하나만 가지고 있는 클래스예요. 마치 소중한 물건을 상자에 넣어서 보관하는 것과 비슷합니다.

왜 사용할까?

나쁜 예시 (1급 컬렉션 없이)

// 어디서든 게임 결과를 마음대로 조작 가능
List<GameResult> results = new ArrayList<>();
results.add(new GameResult("승"));
results.add(new GameResult("패"));

// 다른 곳에서도...
results.clear(); // 앗! 실수로 다 지워버렸다

좋은 예시 (1급 컬렉션 사용)

public class GameResults {
    private final List<GameResult> results = new ArrayList<>();
    
    public void addResult(GameResult result) {
        results.add(result);
    }
    
    public int getWinCount() {
        return (int) results.stream()
            .filter(r -> r.isWin())
            .count();
    }
}

// 사용할 때
GameResults gameResults = new GameResults();
gameResults.addResult(new GameResult("승"));
int wins = gameResults.getWinCount(); // 승리 횟수를 쉽게 조회

장점을 실생활로 비유하면

은행 계좌를 생각해보세요:

  • 돈 목록(컬렉션)을 직접 만지게 하지 않고
  • 입금, 출금, 잔액 조회 같은 정해진 방법으로만 사용
  • 실수로 잔액을 마이너스로 만들거나 할 수 없음

실전 예시

// 장바구니 - 1급 컬렉션
public class ShoppingCart {
    private final List<Product> products = new ArrayList<>();
    
    public void addProduct(Product product) {
        if (products.size() >= 100) {
            throw new IllegalStateException("장바구니가 가득 찼습니다!");
        }
        products.add(product);
    }
    
    public int getTotalPrice() {
        return products.stream()
            .mapToInt(Product::getPrice)
            .sum();
    }
}

핵심 정리

  1. 보호: 컬렉션을 함부로 못 건드리게 함
  2. 로직 집중: 관련 기능들을 한 곳에 모음 (총합 계산, 개수 세기 등)
  3. 명확성: getTotalPrice() 같은 이름으로 의도가 분명함

한 줄 요약: 컬렉션을 전용 상자에 넣고, 정해진 구멍으로만 물건을 넣고 빼게 만드는 것! 이렇게 하면 실수가 줄고 코드가 깔끔해집니다.

profile
개발취준생

0개의 댓글