✏️ 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();