코테 공부/java

제네릭은 primitive 타입 지원 X, int[] to Integer[], Integer[] to int[]

sweet-po 2023. 5. 25. 23:20

https://school.programmers.co.kr/learn/courses/30/lessons/181894?language=java

 

프로그래머스 2의 영역 문제를 풀다가 contains 메서드를 쓰고 싶었는데 결과값이 예상대로 나오지 않아 print 찍어보고 다른거 매개변수로 넣어보고 똥꼬쇼를 하다가 찾았다

 

Arrays.asList(array).contains(value);

Arrays.asList(int[])는 안된다

There's no such thing as a List<int> in Java - generics don't support primitives.

제네릭은 primitive 타입을 지원하지 않는다.

List<Integer>은 되도 List<int>는 안되는 것

분명 아는 개념이라 생각했는데 막상 짤때 생각이 안나면 어떻게 해야하나요..?

 

그래서 결국 int[] to Integer[] 찾아서 했다

 

stream 사용해서 

int a[] = {1,2,3,4};
        Integer b[] = Arrays.stream(a).boxed().toArray(Integer[]::new);

 

반대로 Integer[] to int[]

Integer a[] = {1,2,3,4};
        int b[] = Arrays.stream(a).mapToInt(Integer::intValue).toArray();
        // 아래도 가능
        // int b[] = Arrays.stream(a).mapToInt(i->i).toArray();