簡體   English   中英

如何將 LinkedHashMap 元素添加到列表並在 Groovy 中使用 groupBy 方法

[英]How to add LinkedHashMap elements to a list and use groupBy method in Groovy

我想發布三個不同版本的代碼,其中一個有效,但我不能采用這種方法。

版本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 })

腳本在第 6 行失敗,出現錯誤:處理此頁面時出錯。

Version2 :工作,但我不想在聲明期間將 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 })

收到來自規划服務器的驗證錯誤。 '錯誤:Groovy 腳本編譯失敗,內部錯誤:編譯錯誤:[靜態類型檢查] - 沒有這樣的屬性:類的集群:java.lang.Object @ 第 13 行,第 60 列。規則 SalesPLN.SALESREP.linkedhashmap'

提前致謝。

運行您的原始腳本會產生空指針異常,因為您從未初始化listOfRecords (例如,這應該解決它: def listOfRecords = [] )。 代碼嘗試addlistOfRecords ,這會觸發 NPE。 您的第二個示例確實初始化了您的 var 並因此起作用。

但是,為什么您會收到如此無用的錯誤消息,這超出了我的理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM