상세 컨텐츠

본문 제목

int[]배열을 list로

카테고리 없음

by esoesmio 2023. 4. 25. 09:59

본문

IT/Java

[Java] int 배열을 List로 변환하기

hi.anna 2021. 5. 2. 17:57

지난번에는 배열을 List로 변환하는 방법을 알아보았습니다.

[Java] 배열을 List로, List를 배열로 변환하기

 

[Java] 배열을 List로, List를 배열로 변환하기

배열을 List로 Arrays.asList() new ArrayList<>(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List 배열을 List로 1. Arrays.asList() 코드  import java.util.Arrays; impo..

hianna.tistory.com

지난번 포스팅을 참조하면,

배열을 List로 변환할 때,

Arrays.asList() 메소드를 사용하면 됩니다.

 

하지만, 배열의 원소가 int와 같은 primitive type인 경우

Arrays.asList()는 좀 다른 결과를 리턴합니다.

 

0. Arrays.asList()로 int 배열 변환하기 - Fail

  코드  

 
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 타입의 배열은 다른 방법을 사용해야 합니다.

 

 

 

1. 반복문 사용하기

  코드  

 
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로 변환할 수 있습니다.

 

 

 

2. Stream 사용하기

  코드  

 
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로 변환할 수 있습니다.

댓글 영역