일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- string
- Button
- json
- javascript
- 인텔리제이
- Array
- 자바
- html
- Files
- Visual Studio Code
- ArrayList
- 문자열
- list
- CSS
- windows
- vscode
- js
- 자바스크립트
- Maven
- 테이블
- 배열
- table
- input
- IntelliJ
- Java
- date
- CMD
- 이탈리아
- 이클립스
- Eclipse
- Today
- Total
어제 오늘 내일
[Java] int 배열을 List로 변환하기 본문
지난번에는 배열을 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<Integer> 타입입니다.
하지만, 실제로는 1개의 element를 가지고 있는, List<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로 변환할 수 있습니다.
'IT > Java' 카테고리의 다른 글
[Java] 배열 중복 값 제거하기 (Set, Stream) (0) | 2021.05.03 |
---|---|
[Java] 배열 합계/평균 계산하기 (반복문, Stream) (0) | 2021.05.03 |
[Java] 배열을 List로, List를 배열로 변환하기 (1) | 2021.05.02 |
[Java] Try with resources 로 자원 반납하기 (0) | 2021.05.01 |
[Java] 문자열 거꾸로 뒤집기 (0) | 2021.04.30 |