如何将 LinkedHashMap 元素添加到列表并使用 Groovy 中的 groupBy 方法
How to add LinkedHashMap elements to a list and use groupBy method in Groovy
我想 post 我的代码的三个不同版本,其中一个可以工作,但我不能采用那种方法。
版本 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:不工作。由于它有验证错误,我尝试使用 version1 和 version2
//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 = []
)。代码尝试 add
到 listOfRecords
,这会触发 NPE。您的第二个示例确实初始化了您的 var,因此有效。
虽然我不明白你为什么会收到这样一条无用的错误消息。
我想 post 我的代码的三个不同版本,其中一个可以工作,但我不能采用那种方法。
版本 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:不工作。由于它有验证错误,我尝试使用 version1 和 version2
//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 = []
)。代码尝试 add
到 listOfRecords
,这会触发 NPE。您的第二个示例确实初始化了您的 var,因此有效。
虽然我不明白你为什么会收到这样一条无用的错误消息。