어제 오늘 내일

[Java 기초] Arrays.setAll()로 배열 값 채우기 본문

IT/Java

[Java 기초] Arrays.setAll()로 배열 값 채우기

hi.anna 2025. 8. 29. 12:57

배열을 초기화하거나 규칙적인 값으로 채워야 할 때, 보통은 for문을 사용합니다. 하지만 자바에서는 Arrays.setAll() 메서드를 이용해 훨씬 더 간결하게 처리할 수 있습니다.

 

1. Arrays.setAll()란?

  • 배열의 각 인덱스에 대해 연산을 적용하여 값을 설정합니다.
  • 람다 표현식이나 메서드 참조를 활용할 수 있습니다.
  • Arrays.fill()과 달리, 인덱스 값을 기반으로 계산한 결과를 넣을 수 있다는 점이 큰 특징입니다.

👉 메서드 시그니처:

public static void setAll(int[] array, IntUnaryOperator generator)
  • array : 값을 채울 배열
  • generator : 인덱스를 받아 값을 반환하는 함수형 인터페이스 (IntUnaryOperator)

 

2. 기본 사용 예제

import java.util.Arrays;

public class SetAllExample1 {
    public static void main(String[] args) {
        int[] numbers = new int[5];

        Arrays.setAll(numbers, i -> i * 2);  // 인덱스를 활용

        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과

[0, 2, 4, 6, 8]

👉 인덱스 i를 이용해서 i * 2 값을 배열에 채웠습니다.

 

3. 난수로 채우기

Random과 함께 사용하면 간단하게 랜덤 값 배열을 만들 수 있습니다.

import java.util.Arrays;
import java.util.Random;

public class SetAllExample2 {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        Random random = new Random();

        Arrays.setAll(numbers, i -> random.nextInt(100)); // 0~99 사이 랜덤 값

        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과 예시

[42, 7, 89, 23, 15]

👉 매 실행마다 다른 배열이 생성됩니다.

 

4. 문자열 배열에 적용하기

문자열 배열에도 동일하게 적용할 수 있습니다.

import java.util.Arrays;

public class SetAllExample3 {
    public static void main(String[] args) {
        String[] fruits = new String[3];

        Arrays.setAll(fruits, i -> "Fruit-" + (i+1));

        System.out.println(Arrays.toString(fruits));
    }
}

실행 결과

[Fruit-1, Fruit-2, Fruit-3]

 

5. fill()과의 차이점

  • Arrays.fill() : 배열 전체를 같은 값으로 채움
  • Arrays.setAll() : 인덱스마다 다른 계산식/규칙을 적용할 수 있음
import java.util.Arrays;

public class FillVsSetAll {
    public static void main(String[] args) {
        int[] fillArray = new int[5];
        int[] setAllArray = new int[5];

        Arrays.fill(fillArray, 7); // 전부 7로 채움
        Arrays.setAll(setAllArray, i -> i + 1); // 1,2,3,4,5

        System.out.println("fill: " + Arrays.toString(fillArray));
        System.out.println("setAll: " + Arrays.toString(setAllArray));
    }
}

실행 결과

fill: [7, 7, 7, 7, 7]
setAll: [1, 2, 3, 4, 5]

 

6. 정리

  • Arrays.setAll()람다 기반 배열 초기화에 유용
  • fill()보다 유연하게 규칙적인 값이나 계산된 값을 넣을 수 있음
  • 난수 배열, 패턴 배열, 인덱스 기반 문자열 생성 등에 활용 가능

 

반응형
Comments