Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按值对地图中的地图进行排序_Sorting_Groovy_Map - Fatal编程技术网

Sorting 按值对地图中的地图进行排序

Sorting 按值对地图中的地图进行排序,sorting,groovy,map,Sorting,Groovy,Map,我试图在Groovy中对一个映射进行排序,该映射将映射作为值。我想迭代映射并打印出按lastName和firstName值排序的值。在下面的例子中: def m = [1:[firstName:'John', lastName:'Smith', email:'john@john.com'], 2:[firstName:'Amy', lastName:'Madigan', email:'amy@amy.com'], 3:[firstName:'Lucy', lastName:'B',

我试图在Groovy中对一个映射进行排序,该映射将映射作为值。我想迭代映射并打印出按lastName和firstName值排序的值。在下面的例子中:

def m = 
[1:[firstName:'John', lastName:'Smith', email:'john@john.com'], 
2:[firstName:'Amy',  lastName:'Madigan', email:'amy@amy.com'], 
3:[firstName:'Lucy', lastName:'B',      email:'lucy@lucy.com'], 
4:[firstName:'Ella', lastName:'B',      email:'ella@ella.com'], 
5:[firstName:'Pete', lastName:'Dog',    email:'pete@dog.com']]
预期的结果将是:

[firstName:'Ella', lastName:'B',      email:'ella@ella.com']
[firstName:'Lucy', lastName:'B',      email:'lucy@lucy.com']
[firstName:'Pete', lastName:'Dog',    email:'pete@dog.com']
[firstName:'Amy',  lastName:'Madigan', email:'amy@amy.com']
[firstName:'John', lastName:'Smith', email:'john@john.com']
我尝试了m.sort{it.value.lastName&&it.value.firstName}和m.sort{[it.value.lastName,it.value.firstName]}。按m.sort{it.value.lastName}排序有效,但不按firstName排序

谁能帮上忙,非常感谢,谢谢

这应该可以做到:

m.values().sort { a, b ->
  a.lastName <=> b.lastName ?: a.firstName <=> b.firstName
}
m.values().sort{a,b->
a、 lastName b.lastName?:a.firstName b.firstName
}

我认为这是一个复制品。我们是否可以将它们标记为重复项,或者将它们合并到一个更一般、更具描述性的标题下?