[英]Java 8 stream, groupBy and method invocation
我有以下代碼:
ConcurrentMap<String, Zipper> zippers = list.parallelStream()
.map( f -> {return new Facet( f ) ; } )
.collect(
Collectors.groupingByConcurrent( Facet::getZip,
Collector.of( Zipper::new,
Zipper::accept,
(a,b)-> {a.combine(b); return a; } )
)) ;
for ( String key: zippers.keySet() )
{
zippers.get( key ).zip() ;
}
鑒於我只需要Zipper對象在其上調用zip()方法,是否有一種方法可以在創建每個對象后立即將該方法作為流的一部分進行調用(並在zip之后立即將這些對象丟棄) ()方法已在其上調用),而不是首先必須創建地圖?
您可能想要使用整理器的4參數Collector#of
器#of。
請注意, f -> {return new Facet(f); }
f -> {return new Facet(f); }
可以寫為Facet::new
ConcurrentMap<String, Zipper> zippers = list.parallelStream()
.map(Facet::new)
.collect(
Collectors.groupingByConcurrent(
Facet::getZip,
Collector.of( Zipper::new,
Zipper::accept,
(a,b)-> {a.combine(b); return a; },
z -> {z.zip(); return z;}
)
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.