[Java] int[] ↔ List<Integer>

Hye·2022년 10월 26일
0

✏️ 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();
profile
공부중 📚

0개의 댓글

관련 채용 정보