Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Arrays 클래스의 deepToString()과 asList() 메서드 완벽 가이드

배열(Array)은 동일한 타입의 값들을 연속된 메모리 공간고정된 개수만큼 저장하는 객체입니다. Java에서 배열을 다룰 때 자주 사용되는 deepToString()asList() 메서드는 모두 java.util.Arrays 클래스의 static 메서드입니다.

두 메서드는 각각 다음과 같은 특징을 가집니다.

  • deepToString(): 다차원 배열을 문자열로 변환합니다. 배열의 요소가 또 다른 배열인 경우 이를 재귀적으로 탐색하여 문자열 형태로 변환해 줍니다.
  • asList(): 배열을 리스트(List)로 변환하지만, 고정 크기(fixed-size)의 리스트를 반환합니다. 즉, 반환된 리스트에는 add() 메서드로 요소를 추가할 수 없습니다.

asList()는 배열과 리스트 사이를 연결하는 다리(bridge) 역할을 합니다. 반환된 리스트는 크기를 늘릴 수는 없지만, get(), set(), contains() 등 리스트가 제공하는 나머지 메서드들은 자유롭게 사용할 수 있습니다.

Arrays.deepToString() 문법

public static String deepToString(Object[] a)

예제

import java.util.Arrays;

public class DeepToStringTest {
    public static void main(String[] args) {
        int[][] array = new int[][] {{1, 2, 3}, {11, 12, 13}, {21, 22, 23}};
        System.out.println(Arrays.deepToString(array));
    }
}

실행 결과

[[1, 2, 3], [11, 12, 13], [21, 22, 23]]

위 예제에서 볼 수 있듯이, 일반 toString()으로는 다차원 배열의 내부 값을 제대로 확인할 수 없지만, deepToString()을 사용하면 중첩된 배열의 모든 요소를 사람이 읽기 쉬운 형태로 출력할 수 있습니다.

Arrays.asList() 문법

public static <T> List<T> asList(T... a)

예제

import java.util.Arrays;

public class AsListTest {
    public static void main(String[] args) {
        String[] strArray = {"Welcome", "to", "TutorialsPoint"};
        System.out.println(Arrays.asList(strArray));
    }
}

실행 결과

[Welcome, to, TutorialsPoint]

정리: 두 메서드의 핵심 차이

구분deepToString()asList()
반환 타입StringList<T>
주 용도다차원 배열 내용 출력배열을 리스트처럼 활용
특징중첩 배열을 재귀적으로 문자열화고정 크기 리스트 반환, add()/remove() 불가

배열의 내용을 디버깅하거나 로그로 출력할 때는 deepToString(), 배열 데이터를 컬렉션 API와 함께 사용하고 싶을 때는 asList()를 활용하면 됩니다. 단, asList()로 생성한 리스트에 요소를 추가하려면 new ArrayList<>(Arrays.asList(...))처럼 새로운 ArrayList로 감싸야 한다는 점을 기억하세요.