我列出了类型为Person
的对象:
class Person{
int id
String name
String bestColor
}
def persons = [ new Person(1,'Abdennour','white'),
new Person(2,'Ali','red'),
new Person(3,'Hsen','white'),
new Person(4,'Aicha','green') ]
我有一个颜色列表:
def colors=['green','white','red']
我想根据第三个字段(bestColor
) 对persons
列表进行排序。但是,我不想要颜色的字母顺序,而是想要与 colors
列表相同的顺序。
这意味着,预期结果是:
def persons=[new Person(4,'Aicha','green')
,new Person(1,'Abdennour','white')
,new Person(3,'Hsen','white')
,new Person(2,'Ali','red')]
最佳答案
因此:
@groovy.transform.Canonical
class Person{
int id
String name
String bestColor
}
def persons = [ new Person( 1, 'Abdennour', 'white' ),
new Person( 2, 'Ali', 'red' ),
new Person( 3, 'Hsen', 'white' ),
new Person( 4, 'Aicha', 'green' ) ]
def colors = [ 'green','white','red' ]
你可以这样做:
// Sort (mutating the persons list)
persons.sort { colors.indexOf( it.bestColor ) }
// check it's as expected
assert persons.id == [ 4, 1, 3, 2 ]
关于list - 按其他列表中初始化的自定义顺序对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473999/