Java 8 stream、groupBy 和方法调用



我有以下代码:

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

请注意,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;}
            )
        )
    );

相关内容

  • 没有找到相关文章

最新更新