Как я могу сгруппировать значения карт по 2 различным критериям, чтобы получить результаты, указанные ниже?
def listOfMaps = [
[name:'Clark', city:'London', hobby: 'chess'], [name:'Sharma', city:'London', hobby: 'design'],
[name:'Maradona', city:'LA', hobby: 'poker'], [name:'Zhang', city:'HK', hobby: 'chess'],
[name:'Ali', city: 'HK', hobby: 'poker'], [name:'Liu', city:'HK', hobby: 'poker'],
[name:'Doe', city:'LA', hobby: 'design'], [name:'Smith', city:'London', hobby: 'poker'],
[name:'Johnson', city: 'London', hobby: 'poker'], [name:'Waters', city:'LA', hobby: 'poker'],
[name:'Hammond', city:'LA', hobby: 'design'], [name:'Rogers', city:'LA', hobby: 'chess'],
]
порядок групп: хобби, город
покер
Лондон
Смит
Джонсон
ЛА
Марадона
Воды
HK
Али
Лю
дизайн
Лондон
Шарма
ЛА
Лань
Hammond
HK
шахматы
Лондон
Кларк
ЛА
Роджерс
HK
Чжан
групповой порядок: город, хобби
Лондон
покер
Смит
Джонсон
дизайн
Шарма
шахматы
Кларк
ЛА
покер
Марадона
Воды
дизайн
Лань
Hammond
шахматы
Роджерс
HK
покер
Али
Лю
дизайн
шахматы
Чжан
Изменить:
Что мне действительно нужно, так это способ итерации, чтобы эффективно перебирать структуру группы и иметь возможность построить результат (группа / подгруппа / имя).
Примерно так:
Это дало бы результат, описанный выше.
В качестве приятного момента я хотел бы отсортировать всю структуру данных (группы и имена).