java - 如何将 LinkedHashMap 元素添加到列表并在 Groovy 中使用 groupBy 方法

标签 java groovy groovyshell

我想发布我的代码的三个不同版本,其中一个可以工作,但我不能采用这种方法。

版本1:不工作

List<LinkedHashMap> listOfRecords 
LinkedHashMap a = [product: 'p1', cluster: 'c1', salesorg: 's1']
LinkedHashMap b = [product: 'p2', cluster: 'c2', salesorg: 's2']
LinkedHashMap c = [product: 'p2', cluster: 'c3', salesorg: 's2']

listOfRecords.add(a)
listOfRecords.add(b)
listOfRecords.add(c)

println("listOfRecords : "+listOfRecords)
println("listOfRecords groupby : "+listOfRecords.groupBy { it.cluster })

Script failed on line: 6, with error: An error occurred while processing this page.

版本2:工作,但我不想在声明期间将 LinkedHashMap 分配给列表。

LinkedHashMap a = [product: 'p1', cluster: 'c1', salesorg: 's1']
LinkedHashMap b = [product: 'p2', cluster: 'c2', salesorg: 's2']
LinkedHashMap c = [product: 'p2', cluster: 'c3', salesorg: 's2']

List listOfRecords=[a]
//listOfRecords.add(a)
listOfRecords.add(b)
listOfRecords.add(c)

println("listOfRecords : "+listOfRecords)
println("listOfRecords groupby : "+listOfRecords.groupBy { it.cluster })

版本3:不工作。由于它有验证错误,我尝试使用版本1和版本2

//List<LinkedHashMap> listOfRecords 
LinkedHashMap a = [product: 'p1', cluster: 'c1', salesorg: 's1']
LinkedHashMap b = [product: 'p2', cluster: 'c2', salesorg: 's2']
LinkedHashMap c = [product: 'p2', cluster: 'c3', salesorg: 's2']

List listOfRecords;
//List listOfRecords=[a]
listOfRecords.add(a)
listOfRecords.add(b)
listOfRecords.add(c)

println("listOfRecords : "+listOfRecords)
println("listOfRecords groupby : "+listOfRecords.groupBy { it.cluster })

A validation error was received from the Planning server. 'Error:The Groovy script failed to compile with internal error: Compile Error: [Static type checking] - No such property: cluster for class: java.lang.Object @ line 13, column 60. Rule SalesPLN.SALESREP.linkedhashmap'

提前致谢。

最佳答案

运行原始脚本会出现空指针异常,因为您从未初始化listOfRecords(例如,这应该可以修复它:def listOfRecords = [])。该代码尝试添加listOfRecords,这会触发NPE。您的第二个示例确实初始化了您的 var,因此有效。

我不明白为什么你会收到如此无用的错误消息。

关于java - 如何将 LinkedHashMap 元素添加到列表并在 Groovy 中使用 groupBy 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804623/

相关文章:

java - 在运行时将 Groovy 脚本导入另一个 Groovy 脚本

java - 自建http服务器无法处理postman请求

java - 强制 Hibernate 在删除并重新创建数据库后创建表

java - Gradle:在我自己的任务中从导入的插件调用任务

java - 用于查找和替换 XML 文件中的字符的 Groovy 脚本

java - 如何从 Java 评估我自己的 Groovy 脚本?

java - 找不到插件 'org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0'

Java 8 : mapping list inisde a list

macos - 如何在 Mac 上的 Sublime Text 3 中启用 Groovy 注释?

grails - Groovy 变量双重替换