Collection.stream().map()로부터의 거절을 거쳐
구현하고 싶은 일
List 요소의 클래스에서 두 개의 String
를 추출하고,
그 2 개의 String
를 포함한 Pair의 List를 생성한다.
스트림 사용하면 좋을 것 같아요^^
빌드할 수 없음
List<Hogehoge> list;
list
.stream()
.map(Pair.of(Hogehoge::getFoo, Hogehoge::getBar))
// ↑↑ Object is not a functional interface ↑↑
.collect(Collectors.toList())
응! ?
Functional Interface!?
함수형 인터페이스는
함수 메소드라는 단일 추상 메소드를 포함하는 인터페이스
ref . 패키지 java.util.function
ref . Java8 in Action
게다가...
람다 식을 사용하여,
함수형 인터페이스의 추상 메소드의 구현을 인라인으로 명시할 수 있고,
전체 표현식은 함수 인터페이스의 인스턴스로 취급 될 수 있습니다.
(말하자면, 함수형 인터페이스의 구현이 된다)
ref . Java8 in Action
과연.
여기서, 이하의 2개의 것을 이해.
1. 함수형 인터페이스는 단일 추상 메소드를 포함하는 인터페이스
2. 람다 식으로 함수형 인터페이스 구현 가능
원래 Stream.map()의 정의는 ^^;
Stream map(Function mapper)
파라미터: mapper
- 각 요소에 적용되는 비 간섭, 상태 비 저장 기능
인터페이스 Stream<T>
인수 mapper의 형태인 Function은,
단일 추상 메서드apply
가 있는 "함수 인터페이스"
ref. 인터페이스 기능 <T, R>
주제로 돌아가
함수형 인터페이스인 Function을 람다 식으로 구현해,
map에 건네주면 좋은 것을 알았다.
List<Hogehoge> list;
Function<Hogehoge,Pair<String,String>> makePairsFromObj =
hoge -> Pair.of(hoge.getFoo(), hoge.getBar());
List<Pair<String, String>> pList = list
.stream()
//.map(makePairFromObj::apply)
.map(makePairFromObj) // Function型の変数を渡せばよい by @swordone
.collect(Collectors.toList());
혹은, 직접 람다식을 건네준다 ( @swordone 씨로부터의 지적)
List<Hogehoge> list;
List<Pair<String, String>> pList = list
.stream()
.map(hoge -> Pair.of(hoge.getFoo(), hoge.getBar()))
.collect(Collectors.toList());
\(^o^)/
Reference
이 문제에 관하여(Collection.stream().map()로부터의 거절을 거쳐), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koma_/items/320bd35749e747cd6719
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
List<Hogehoge> list;
list
.stream()
.map(Pair.of(Hogehoge::getFoo, Hogehoge::getBar))
// ↑↑ Object is not a functional interface ↑↑
.collect(Collectors.toList())
List<Hogehoge> list;
Function<Hogehoge,Pair<String,String>> makePairsFromObj =
hoge -> Pair.of(hoge.getFoo(), hoge.getBar());
List<Pair<String, String>> pList = list
.stream()
//.map(makePairFromObj::apply)
.map(makePairFromObj) // Function型の変数を渡せばよい by @swordone
.collect(Collectors.toList());
List<Hogehoge> list;
List<Pair<String, String>> pList = list
.stream()
.map(hoge -> Pair.of(hoge.getFoo(), hoge.getBar()))
.collect(Collectors.toList());
Reference
이 문제에 관하여(Collection.stream().map()로부터의 거절을 거쳐), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koma_/items/320bd35749e747cd6719텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)