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()
R
ArrayList<Integer>
<R, A>
Collectors.toList()
이 경우 왜 ArrayList<Integer>
"를 반환합니다 ArrayList
. List
구현되어 정의되지 않은 당신이 그것을 반환하는 것을 구현에 의존 할 수 있습니다. 는 AS 의 javadoc가 말한다 : "없습니다 유형에 대한 보장 , 가변성, 직렬화, 반품 목록의 스레드 안전;"
toList()
을 반환하지 않습니다 ArrayList
또는을List
반환 - Collector
결국 생성하고 반환하는하는 List
- 또한 문서 상태 : "...에 대한 보장이 없습니다 유형 , 가변성, 직렬화, 또는 목록의 스레드 안전성이 반환; 반환 된 List에 대한 추가 제어가 필요한 경우 toCollection (Supplier) .... "를 사용하십시오.
R
결과 유형의 일반 유형입니다.A
수집기의 중간 누적 유형의 일반 유형 이는 콜렉터 작동 방식의 구현 세부 사항이며, 병렬 처리를 위해 분할 및 정복을 수행하여 먼저 중간 유형으로 수집합니다.