✏️ int[]
→ List<Integer>
Arrays.asList()
는 primitive type을 Wrapper 클래스 (int → Integer)로 형변환해주지 않아서 사용 불가 !
- int는 primitive data type이므로 generic으로 포함될 수 없으므로 int는 wrapper를 써서 Integer로 바꿔줘야 함
1️⃣ Stream 사용
Arrays.stream(arr)
.boxed()
.collect(Collectors.toList());
Arrays.stream(arr)
: 배열을 stream화
- 결과 : IntStream
IntStream.of(arr)
도 사용 가능
boxed()
: stream의 개별 값을 wrapper해 Integer 객체로 변경
collect(Collectors.toList())
: Stream을 List로 변경
2️⃣ 반복문 사용
List<Integer> list = new ArrayList<>(arr.length);
for (int num : arr) {
list.add(num);
}
✏️ List<Integer>
→ int[]
- int형과 같은 primitive 타입은 toArray() 사용 불가 !
1️⃣ Stream 사용
int[] arr = list.stream()
.mapToInt(i -> i)
.toArray();
list.stream()
: list를 stream으로 변환
.mapToInt(i->i)
: map을 이용해 intStream으로 변환
.mapToInt(Integer::intValue)
도 가능
- 차이 ❗️
.mapToInt(i->i)
: java가 자동으로 각 요소의 Integer를 int형으로 unboxing 해줌
.mapToInt(Integer::intValue)
: intValue 메서드를 통해 각 요소를 int형으로 변경
.toArray()
: 배열로 변환
2️⃣ 반복문 사용
int[] arr = new int[list.size()];
for (int i - 0; i < list.size(); i++){
arr[i] = list.get(i).intValue();