Java/배열

[Java]배열 초기화 방법(Initializing Array)

DevStory 2022. 9. 8. 18:36

배열 초기화 방법

Java에서 배열은 동일한 타입의 데이터가 연속적으로 존재하며, 크기가 고정인 데이터입니다.

 

배열을 초기화하는 방법은 간단합니다.

 

다음 소스 코드처럼 new 키워드를 사용하여 선언과 동시에 초기화하거나 또는 new 키워드를 생략할 수 있습니다.

int intArray1[] = new int[] {0, 1, 2, 3};
int intArray2[] = {0, 1, 2, 3};

하지만, 배열의 값을 0부터 1000까지 초기화해야 하는 경우 위 방법을 사용하는 것은 현명하지 않습니다.

 

이번 포스팅은 배열을 초기화하는 몇 가지 방법을 소개합니다.


방법 1. 반복문

배열의 크기를 미리 알고 있으며, 채워야 하는 값도 알고 있다면, 반복문을 사용하여 값을 할당할 수 있습니다.

 

다음 예제는 int 타입의 배열에 0부터 1000까지 값을 할당합니다.

int intArray[] = new int[1001];

for(int index = 0; index < intArray.length; index++) {
  intArray[index] = index;
}

방법 2. Arrays 클래스의 fill 메서드

배열의 크기를 미리 알고 있으며, 동일한 값을 배열에 채워야 한다면, Arrays 클래스에서 제공하는 fill() 메서드를 사용할 수 있습니다.

 

다음 예제는 int 타입의 모든 요소를 10으로 할당합니다.

int intArray[] = new int[10];

Arrays.fill(intArray, 10);

fill() 메서드는 모든 타입의 배열에서 사용할 수 있습니다.


방법 3. Arrays 클래스의 setAll 메서드

배열의 크기를 미리 알고 있으며, 배열에 할당해야 하는 값에 특정 로직이 존재하거나 조건이 존재한다면, Arrays 클래스의 setAll() 메서드를 사용할 수 있습니다.

 

다음 예제는 int 타입의 모든 요소에 2의 배수를 할당합니다.

public static void main(String args[]) {
  int intArray[] = new int[10];

  Arrays.setAll(intArray, num -> num * 2);

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

[실행 결과]

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 

다음 예제는 int 타입의 모든 요소에 2의 배수를 할당하지만, 4으로 나누었을 때 나머지가 0인 경우 0을 할당합니다.

public static void main(String args[]) {
  int intArray[] = new int[10];

  Arrays.setAll(intArray, num -> {
    if((num * 2) % 4 == 0) {
      return 0;
    }
    else {
      return num * 2;
    }
  });

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

[실행 결과]

[0, 2, 0, 6, 0, 10, 0, 14, 0, 18]

setAll() 메서드는 모든 타입의 배열에서 사용할 수 있습니다.


방법 4. Stream API

Java의 버전이 1.8 이상인 경우 IntStream 클래스에서 제공하는 range() 메서드를 사용하여 특정 범위의 값으로 배열을 초기화할 수 있습니다.

 

다음 예제는 range() 메서드를 사용하여 0부터 10까지 값을 배열에 할당합니다.

public static void main(String args[]) {
  int intArray[] = IntStream.range(0, 11).toArray();

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

 [실행 결과]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
반응형