어제 오늘 내일

[Java] Collections.fill() – 리스트를 한 값으로 채우기 본문

IT/Java

[Java] Collections.fill() – 리스트를 한 값으로 채우기

hi.anna 2025. 9. 11. 12:09

리스트를 다루다 보면 테스트 데이터를 만들거나, 특정 초기값으로 리스트 전체를 채워야 할 때가 있습니다.
이때 Collections.fill() 메서드를 사용하면 아주 간단히 해결할 수 있습니다.
이 메서드는 리스트의 모든 요소를 하나의 동일한 값으로 채우는 기능을 제공합니다.

 

1. 기본 사용법

import java.util.*;

public class FillExample1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

        Collections.fill(list, "X");

        System.out.println(list); // [X, X, X, X]
    }
}

👉 모든 요소가 "X"로 바뀌었습니다.

 

2. 초기화 용도로 사용

테스트용 데이터를 만들 때 유용합니다.

import java.util.*;

public class FillExample2 {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(Arrays.asList(new Integer[5])); 
        Collections.fill(numbers, 0);

        System.out.println(numbers); // [0, 0, 0, 0, 0]
    }
}

👉 길이 5짜리 리스트를 0으로 초기화했습니다.
(Java에서 new Integer[5]null로 채워진 배열을 만듭니다 → Arrays.asList()로 리스트 변환 → fill로 값 채우기)

 

3. 주의할 점

  • 리스트가 비어있으면 아무 일도 일어나지 않음
  • fill()은 리스트의 기존 크기를 바꾸지 않음 → 값만 바꿈
List<String> emptyList = new ArrayList<>();
Collections.fill(emptyList, "Test"); // 예외는 안 나지만 아무 변화도 없음
  • Arrays.asList()로 만든 고정 크기 리스트fill() 적용 가능
    (다만 요소의 값만 변경할 수 있고, 크기를 변경하는 add/remove는 불가능)

 

4. 활용 예시

  • 초기화: 리스트를 모두 0, null, 또는 특정 기본값으로 채움
  • 테스트 데이터 생성: Mock 데이터 만들 때 유용
  • 게임 보드/배열 상태 세팅: 예를 들어, 체스판이나 바둑판 초기화
public class GameBoardInit {
    public static void main(String[] args) {
        List<String> board = new ArrayList<>(Arrays.asList(new String[9]));
        Collections.fill(board, "-");

        System.out.println(board); // [-, -, -, -, -, -, -, -, -]
    }
}

 

5. 정리

  • Collections.fill(List<? super T> list, T obj)
    → 리스트의 모든 요소를 obj로 대체
  • 리스트 크기는 바뀌지 않고, 값만 변경됨
  • 초기화, 테스트 데이터, 보드 게임 같은 상황에서 유용

👉 리스트 전체를 한 값으로 채워야 한다면 Collections.fill()을 활용하자!

 

 

반응형
Comments