Как добавить элементы LinkedHashMap в список и использовать метод groupBy в Groovy - PullRequest
0 голосов
/ 18 января 2020

Я хочу опубликовать три разные версии своих кодов, из которых одна работает, но я не могу go с таким подходом.

Версия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: не работает. Так как он имеет ошибку проверки, я попытался с версией 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 })

Ошибка проверки была получена с сервера планирования. Ошибка: сценарий Groovy не скомпилирован с внутренней ошибкой: Ошибка компиляции: [Stati c проверка типа] - Нет такого свойства: кластер для класса: java .lang.Object @ строка 13, столбец 60. Правило SalesPLN.SALESREP.linkedhashmap '

Заранее спасибо.

1 Ответ

1 голос
/ 18 января 2020

Запуск вашего оригинального скрипта дает исключение нулевого указателя, потому что вы никогда не инициализируете listOfRecords (например, это должно исправить: def listOfRecords = []). Код пытается от add до listOfRecords, что вызывает NPE. Ваш второй пример инициализирует ваш var и, следовательно, работает.

Почему вы получаете такое бесполезное сообщение об ошибке, я не знаю.

...