根据字符串 属性 对对象数组列表进行排序
Sorting arraylist of objects based on String property
我是 groovy 语法的新手。
我有这样的数据结构。
[
{"name": "John", "gender": "Male", "id": "1"},
{"name": "Max", "gender": "Male", "id": "2"},
{"name": "John", "gender": "Male", "id": "3"},
{"name": "Sam", "gender": "Male", "id": "4"},
{"name": "Max", "gender": "Male", "id": "5"},
{"name": "Sam", "gender": "Male", "id": "6"},
{"name": "Sam", "gender": "Male", "id": "7"},
{"name": " ", "gender": "Male", "id": "8"},
{"name": "John", "gender": "Male", "id": "9"},
{"name": " ", "gender": "Male", "id": "10"},
]
我正在尝试根据 name
属性 对其进行排序。我需要所有带有 name=max
的记录应该首先出现,然后是 name=Sam
,然后是 name=John
以及具有空 name
字段或任何其他值的剩余记录。
有人可以建议我如何实现吗?
谢谢。
类似
def weights = [ "Max", "Sam", "John", '', ]
def sorted = [
["name": "John", "gender": "Male", "id": "1"],
["name": "Max", "gender": "Male", "id": "2"],
["name": "John", "gender": "Male", "id": "3"],
["name": "Sam", "gender": "Male", "id": "4"],
["name": "Max", "gender": "Male", "id": "5"],
["name": "Sam", "gender": "Male", "id": "6"],
["name": "Sam", "gender": "Male", "id": "7"],
["name": " ", "gender": "Male", "id": "8"],
["name": "John", "gender": "Male", "id": "9"],
["name": " ", "gender": "Male", "id": "10"],
].sort{ weights.indexOf it.name.trim() }
println sorted.join( '\n' )
打印
[name:Max, gender:Male, id:2]
[name:Max, gender:Male, id:5]
[name:Sam, gender:Male, id:4]
[name:Sam, gender:Male, id:6]
[name:Sam, gender:Male, id:7]
[name:John, gender:Male, id:1]
[name:John, gender:Male, id:3]
[name:John, gender:Male, id:9]
[name: , gender:Male, id:8]
[name: , gender:Male, id:10]
我是 groovy 语法的新手。
我有这样的数据结构。
[
{"name": "John", "gender": "Male", "id": "1"},
{"name": "Max", "gender": "Male", "id": "2"},
{"name": "John", "gender": "Male", "id": "3"},
{"name": "Sam", "gender": "Male", "id": "4"},
{"name": "Max", "gender": "Male", "id": "5"},
{"name": "Sam", "gender": "Male", "id": "6"},
{"name": "Sam", "gender": "Male", "id": "7"},
{"name": " ", "gender": "Male", "id": "8"},
{"name": "John", "gender": "Male", "id": "9"},
{"name": " ", "gender": "Male", "id": "10"},
]
我正在尝试根据 name
属性 对其进行排序。我需要所有带有 name=max
的记录应该首先出现,然后是 name=Sam
,然后是 name=John
以及具有空 name
字段或任何其他值的剩余记录。
有人可以建议我如何实现吗?
谢谢。
类似
def weights = [ "Max", "Sam", "John", '', ]
def sorted = [
["name": "John", "gender": "Male", "id": "1"],
["name": "Max", "gender": "Male", "id": "2"],
["name": "John", "gender": "Male", "id": "3"],
["name": "Sam", "gender": "Male", "id": "4"],
["name": "Max", "gender": "Male", "id": "5"],
["name": "Sam", "gender": "Male", "id": "6"],
["name": "Sam", "gender": "Male", "id": "7"],
["name": " ", "gender": "Male", "id": "8"],
["name": "John", "gender": "Male", "id": "9"],
["name": " ", "gender": "Male", "id": "10"],
].sort{ weights.indexOf it.name.trim() }
println sorted.join( '\n' )
打印
[name:Max, gender:Male, id:2]
[name:Max, gender:Male, id:5]
[name:Sam, gender:Male, id:4]
[name:Sam, gender:Male, id:6]
[name:Sam, gender:Male, id:7]
[name:John, gender:Male, id:1]
[name:John, gender:Male, id:3]
[name:John, gender:Male, id:9]
[name: , gender:Male, id:8]
[name: , gender:Male, id:10]