지난번에는 배열을 List로 변환하는 방법을 알아보았습니다.
[Java] 배열을 List로, List를 배열로 변환하기
지난번 포스팅을 참조하면,
배열을 List로 변환할 때,
Arrays.asList() 메소드를 사용하면 됩니다.
하지만, 배열의 원소가 int와 같은 primitive type인 경우
Arrays.asList()는 좀 다른 결과를 리턴합니다.
코드
|
import java.util.Arrays; |
|
import java.util.List; |
|
|
|
public class IntArrayConvertToList { |
|
public static void main(String[] args) { |
|
|
|
// int 배열 |
|
int[] arr = { 1, 2, 3 }; |
|
|
|
// Arrays.asList() |
|
List<int[]> intList = Arrays.asList(arr); |
|
|
|
// 결과 출력 |
|
System.out.println(intList.size()); // 1 |
|
System.out.println(intList.get(0)); // I@71bb301 |
|
System.out.println(Arrays.toString(intList.get(0))); // [1, 2, 3] |
|
|
|
} |
|
} |
결과
|
1 |
|
[I@71dac704 |
|
[1, 2, 3] |
Arrays.asList()에 int 배열을 파라미터로 전달했을 때 나오기 기대했던 결과는
3개의 element를 가지고 있는, List 타입입니다.
하지만, 실제로는 1개의 element를 가지고 있는, List<int[]> 타입이 리턴되었습니다.</int[]>
Arrays.asList() 메소드는,
primitive 타입을 Wrapper 클래스로(여기서는 int에서 Integer로) 형변환해주지 않기 때문에,
primitive 타입의 배열은, Arrays.asList()로는 List로 변환할 수 없습니다.
따라서, int와 같은 primitive 타입의 배열은 다른 방법을 사용해야 합니다.
코드
|
import java.util.ArrayList; |
|
import java.util.List; |
|
|
|
public class IntArrayConvertToList { |
|
public static void main(String[] args) { |
|
|
|
// int 배열 |
|
int[] arr = { 1, 2, 3 }; |
|
|
|
// int -> List |
|
List<Integer> intList = new ArrayList<>(); |
|
for (int element : arr) { |
|
intList.add(element); |
|
} |
|
|
|
// List 출력 |
|
System.out.println(intList.size()); // 3 |
|
System.out.println(intList); // [1, 2, 3] |
|
|
|
} |
|
} |
결과
|
3 |
|
[1, 2, 3] |
int 배열은 Arrays.asList()를 사용할 수 없으므로,
위와 같이 반복문을 사용하여
배열을 List로 변환할 수 있습니다.
코드
|
import java.util.Arrays; |
|
import java.util.List; |
|
import java.util.stream.Collectors; |
|
|
|
public class IntArrayConvertToList { |
|
public static void main(String[] args) { |
|
|
|
// int 배열 |
|
int[] arr = { 1, 2, 3 }; |
|
|
|
// int -> List |
|
List<Integer> intList |
|
= Arrays.stream(arr) |
|
.boxed() |
|
.collect(Collectors.toList()); |
|
|
|
// List 출력 |
|
System.out.println(intList.size()); // 3 |
|
System.out.println(intList); // [1, 2, 3] |
|
|
|
} |
|
} |
결과
|
3 |
|
[1, 2, 3] |
Java 8 이후부터는 Stream을 사용할 수 있습니다.
여기서 boxed() 메소드는 Primitive Stream 값들을 Wrapper Class로 바꿔줍니다.
그후, collect(Collectors.toList())를 이용하여, 주어진 stream을 List로 변경해 줄 수 있습니다.
double, long 등 다른 primitive 타입의 배열도 위와 같은 방법으로
배열을 List로 변환할 수 있습니다.
댓글 영역