2014-12-15 2 views
1

내가 그렇게 같은 Stream<List<Integer>>에서 List<Integer>를 생성하는 코드 작성했습니다 :IntStream의 사용 사례는 무엇입니까?

List<Integer> abc = stream.flatMap(e -> e.stream()). 
    collect(Collectors.toList()); 

을하지만 IntStream를 사용하는 방법에 관심이 있어요. 내가 나에게 컬렉터가 수집하는 것 인 IntStream을주고 flatMapToInt를 사용하여

List<Integer> abc = stream.flatMapToInt(e -> e.stream()). 
    collect(Collectors.toList()); 

을 할 수 있다고 생각하지만, 내가 컴파일 오류 얻을 : IntStream 무엇

Type mismatch: cannot convert from Collector<Object,?,List<Object>> to Supplier<R> 

을, 어떻게하는 것이 다르다 일반 스트림, 언제 사용합니까?

+4

다음은 질문에 대한 답변을 제공하는 javadoc입니다. http://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html –

답변

4

복싱을 필요로하지 않는 중급 또는 터미널 작업이있을 때는 자주 사용하고 산술 결과를 원할 때는 IntStream을 자주 사용하십시오. List<List<Integer>> 및 중 당신이 박스 일에 언 박싱 결과를 매핑하고와하지 않는 경우 - 예를 들어, 당신은 당신의 중간 결과가 박스하지 않을 때 당신이 그것을 사용하려는 것, 일반적으로

students.stream().mapToInt(Student::getTestScore).average() 

을 작성할 수 있습니다 mapToObj, 또는 여기 average() 같은 그것으로 arithmeticky 뭔가를하고와.

실제로 목록의 내용이 Integer들이라는 것을 상관하지 않는다이 사용 사례에 대한 가능성이 고통을 제외하고 당신에게 아무것도 구입하지 않는다; 여기 정수에 대해서는 아무 것도 사용하지 않고 있습니다.

+0

아 - 알겠습니다. 감사! – user384842

관련 문제