int 배열을 List로 변환하려고했지만 Java 8 Stream을 사용하는 익숙하지 않은 경로를 사용하여이를 생각해 냈습니다.
Arrays.stream(arr).boxed().collect(Collectors.toList());
나는 아직도이 선을 완전히 이해하는데 어려움을 겪고있다.
Collectors.toList()이 경우ArrayList<Integer>구현List인터페이스를 반환하는 이유는 무엇 입니까? 인터페이스를LinkedList<Integer>준수하는 다른 일반 클래스가 아닌 이유는 무엇List입니까? 나는 이것에 대해 아무것도 찾을 ArrayList를 언급하는 간단한을 제외 할 수없는 여기 API를 참고 섹션에서.왼쪽 패널의 의미는 무엇입니까? 분명히 일반적인 반환 유형입니다 ( 여기의 코드에서는). 그리고 메소드의 일반적인 유형 인수 라고 생각 하지만 어떻게 지정됩니까? Collector 인터페이스 문서를 살펴본 결과 흡수 할 수 없었습니다.
Stream.collect()RArrayList<Integer><R, A>
Collectors.toList()이 경우 왜 ArrayList<Integer>"를 반환합니다 ArrayList. List구현되어 정의되지 않은 당신이 그것을 반환하는 것을 구현에 의존 할 수 있습니다. 는 AS 의 javadoc가 말한다 : "없습니다 유형에 대한 보장 , 가변성, 직렬화, 반품 목록의 스레드 안전;"
toList()을 반환하지 않습니다 ArrayList또는을List 반환 - Collector결국 생성하고 반환하는하는 List- 또한 문서 상태 : "...에 대한 보장이 없습니다 유형 , 가변성, 직렬화, 또는 목록의 스레드 안전성이 반환; 반환 된 List에 대한 추가 제어가 필요한 경우 toCollection (Supplier) .... "를 사용하십시오.
R결과 유형의 일반 유형입니다.A수집기의 중간 누적 유형의 일반 유형 이는 콜렉터 작동 방식의 구현 세부 사항이며, 병렬 처리를 위해 분할 및 정복을 수행하여 먼저 중간 유형으로 수집합니다.