欢迎大家!
我想知道如何实现我自己的终结者,这不是琐事,比如身份功能。 我收藏家的标题是
public class SequentialPPSCollector<T> implements
Collector<Pair<T, Double>, List<Pair<T, Double>>, List<T>> {...}
里面有一个修整器方法,可以将List<Pair<T, Double>>
转换为List<T>
@Override
public Function<List<Pair<T, Double>>, List<T>> finisher() {
return ...
}
这可以完成工作
return list -> list
.stream()
.map(Pair::getLeft)
.collect(Collectors.toList());
答案 0 :(得分:3)
以下是将List<Pair<T, Double>>
转换为List<T>
的方法:
List<T> listOfT = list.stream()
.map(Pair::getFirst)
.collect(Collectors.toList());
所以你的终结者功能可能如下所示:
@Override
public Function<List<Pair<T, Double>>, List<T>> finisher() {
return list -> list.stream().map(Pair::getFirst).collect(toList());
}
<小时/> 虽然这个例子有点简单,因为在这种情况下你可以像这样声明你的收集器:
class SequentialPPSCollector<T> implements Collector<Pair<T, Double>, List<T>, List<T>> {...}
让累加器抓取对象对象的类型T:
@Override
public BiConsumer<List<T>, Pair<T, Double>> accumulator() {
return (list, p) -> list.add(p.getFirst());
}
这样你的终结者就是身份功能。答案的第一部分应该给你一个起点。