아래 코드를 살펴 보겠습니다.lambda 표현식이 기능 인터페이스로 매핑되는 방식은 무엇입니까?
List<String> names = Arrays.asList("Adam", "Brian", "Supun");
List<Integer> lengths = names.stream()
.map(name -> name.length())
.collect(Collectors.toList());
그리고 간단히 streams.map
에 대한 javadoc 볼 것이다. 거기에 map
메서드의 서명이 이와 같이 나타납니다.
<R> Stream<R> map(Function<? super T,? extends R> mapper)
누군가는 JVM이
Function<? super T,? extends R> mapper
의 측면에서 우리가 준 람다 식 (
name -> name.length()
)를 매핑하는 방법을 설명해 주시겠습니까?
달성하려는 작업은 무엇입니까? Stream 유형의 로컬 변수를 생성 할 필요가 없습니다. 'names.stream(). map (...). collect (Collectors.toList())'를 찾고 계십니까? 또한 원시 목록 유형을 사용하지 마십시오. – Michael
@Michael 실제로 나는 람다 표현 부분에 집중할 시청자가 필요했습니다. 그래서 당신이 언급 한 후자의 추가 사항을 추가하지 않았습니다. 이것은 람다를 기능적 인터페이스로 매핑하는 것을 이해하는 것입니다. 다른 건 없어. :)) –
@ 마이클이 당신의 요점을 알아 냈습니다. 고맙습니다. :)) 희망 코드를 수정했습니다. –