Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自Groovy的Java8流分组_Groovy_Java Stream - Fatal编程技术网

来自Groovy的Java8流分组

来自Groovy的Java8流分组,groovy,java-stream,Groovy,Java Stream,我正在尝试使用@CompileStatic将Java 8流API与groovy结合使用: 编写groupingBy让我头疼,错误是: java.util.stream.Collector中的groupingBy不能应用于groovy.lang.Close 目前正在使用Java8和Groovy2.4.7 我的意图是: 使用map构建dto 使用collect和groupingBy创建一个使用UUID作为键的映射 这是最终工作代码(使用“Will Lp”和“BalRog”支持开发) import g

我正在尝试使用
@CompileStatic
将Java 8流API与groovy结合使用:

编写
groupingBy
让我头疼,错误是:

java.util.stream.Collector中的groupingBy不能应用于groovy.lang.Close

目前正在使用Java8和Groovy2.4.7

我的意图是:

  • 使用map构建dto
  • 使用
    collect
    groupingBy
    创建一个使用UUID作为键的映射
  • 这是最终工作代码(使用“Will Lp”和“BalRog”支持开发)

    import groovy.transform.CompileStatic
    导入groovy.transform.Immutable
    导入java.util.function.function
    导入静态java.util.stream.Collectors.groupingBy;
    @编译的
    公共课感谢您的关注{
    @不变的
    公共静态阶级关系{
    字符串entityUUID
    }
    公共静态void main(字符串[]args){
    列表行=[
    [entityUUID:“uuid 1”],
    [实体uuid:“uuid 2”]
    ]
    映射关系=行。流()
    .map{row->new关系(作为HashMap的行)}
    .collect(groupingBy((函数){Relation r->return r.entityUUID}))
    println(关系);
    断言关系==[
    “uuid 1”:[新关系(entityUUID:“uuid 1”)],
    “uuid 2”:[新关系(entityUUID:“uuid 2”)]
    ]
    }
    }
    
    您需要显式地将闭包强制转换为
    函数
    ,这是
    收集器.groupBy()所期望的参数类型。更改此行:

        .collect(groupingBy { Relation r -> return r.entityUUID })
    
    为此:

        .collect(groupingBy((Function) { Relation r -> return r.entityUUID }))
    

    (记住导入
    java.uti‌​l、 function.function

    您可以发布您的
    groupingBy
    代码吗?是Java 8 API Java.util.stream.Collectors.groupingBy中的静态groupingBy函数,我使用您的代码编写了一个,但无法重现您的错误。你能告诉我哪里弄错了吗?还有,你的groovy和java版本是什么?非常感谢Will Lp,你的例子现在更清楚了。我已经把你的工作,并编辑它,使之符合我的代码和复制错误。目前正在使用Java8和Groovy2.4.7。令人惊讶的是,去掉@CompileStatic可以让事情顺利进行,但这不是一个选项。我猜可能是泛型的问题,它需要一些铸件来制作魔术。Thx BalRog,这是最后一点需要使它工作!
        .collect(groupingBy((Function) { Relation r -> return r.entityUUID }))