배열(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() |
|---|---|---|
| 반환 타입 | String | List<T> |
| 주 용도 | 다차원 배열 내용 출력 | 배열을 리스트처럼 활용 |
| 특징 | 중첩 배열을 재귀적으로 문자열화 | 고정 크기 리스트 반환, add()/remove() 불가 |
배열의 내용을 디버깅하거나 로그로 출력할 때는 deepToString(), 배열 데이터를 컬렉션 API와 함께 사용하고 싶을 때는 asList()를 활용하면 됩니다. 단, asList()로 생성한 리스트에 요소를 추가하려면 new ArrayList<>(Arrays.asList(...))처럼 새로운 ArrayList로 감싸야 한다는 점을 기억하세요.