lambda - How to implement my own finisher in a collector? -


welcome people!

i wondering how implement own finisher not trival, identity function. header of collector is

public class sequentialppscollector<t> implements     collector<pair<t, double>, list<pair<t, double>>, list<t>> {...} 

inside there finisher method should transform list<pair<t, double>> list<t>

@override public function<list<pair<t, double>>, list<t>> finisher() {     return ... } 

this job

return list -> list        .stream()        .map(pair::getleft)        .collect(collectors.tolist()); 

here's how can transform list<pair<t, double>> list<t>:

list<t> listoft = list.stream()                       .map(pair::getfirst)                       .collect(collectors.tolist()); 

so finisher function looks this:

@override public function<list<pair<t, double>>, list<t>> finisher() {     return list -> list.stream().map(pair::getfirst).collect(tolist()); } 


although example bit simple because in case declare collector this:

class sequentialppscollector<t> implements collector<pair<t, double>, list<t>, list<t>> {...}  

and let accumulator grab type t of pair object:

@override public biconsumer<list<t>, pair<t, double>> accumulator() {     return (list, p) -> list.add(p.getfirst()); } 

so finisher identity function. first part of answer should give starting point though.


Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

datatable - Matlab struct computations -