반응형

 

배열을 컬렉션 프레임워크로 변환

 

 

방법 1

 

int[] arr = {1,2,3,4,5};
List<Integer> list1 = new ArrayList<>();

for(int i = 0 ; i<arr.length; i++)
    list1.add(arr[i]);

 


 

방법 2

 

int[] arr = {1,2,3,4,5};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());

int 기본형 배열은 boxed()가 필요하다.

 

 

String[] strArr = {"K", "O", "M"};
List<String> strList = Arrays.stream(strArr).collect(Collectors.toList());

일반적인 객체 배열은 boxed()가 필요하지 않다.

 

 

IntStream is = IntStream.of(1,2,3,4);
List<Integer> list2 = is.collect(Collectors.toList()); // 컴파일에러

그 이유는 Arrays.stream()을 이용해서 기본형 배열을 스트림으로 바꾸게 되면, 타입이 IntStream이 된다.

IntStream을 다시 Stream<T>와 같은 형태로 만들기 위해 boxed()를 사용한다.

 


 

컬렉션 프레임워크를 배열로 변환

 

방법 1

 

List<Integer> list = Arrays.asList(1,2,3,4,5);
int[] ar = new int[list.size()];

for(int i = 0; i<list.size(); i++)
    ar[i] = list.get(i);

 

방법 2

 

List<Integer> list = Arrays.asList(1,2,3,4,5);
int[] arr = list.stream().mapToInt(e->e).toArray();

배열을 컬렉션 프레임워크로 바꿀때와 마찬가지로 Stream<T>를 IntStream으로 변환 후 toArray()

 

 

 

 

 


 

반응형

+ Recent posts