2013-12-09 3 views
2

я есть перечислим объектов, какой тип 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'] 

я хочу заказ persons список в соответствии с третьим полем (bestColor). Тем не менее, мне не нужен алфавитный порядок цветов, но я хочу получить тот же порядок, что и список colors. , что это значит, ожидаемый результат:

def persons=[new Person(4,'Aicha','green') 
,new Person(1,'Abdennour','white') 
,new Person(3,'Hsen','white') 
,new Person(2,'Ali','red')] 

ответ

2

Так Дано:

@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 ] 
+0

действительно, спасибо! –

Смежные вопросы