Załóżmy, że mam listę osób, które muszę sortować według wieku, a następnie według nazwy.Sortowanie kolekcji według wielu pól w Kotlin
Pochodzę z C# -background, mogę łatwo osiągnąć to we wspomnianej język za pomocą LINQ:
var list=new List<Person>();
list.Add(new Person(25, "Tom"));
list.Add(new Person(25, "Dave"));
list.Add(new Person(20, "Kate"));
list.Add(new Person(20, "Alice"));
//will produce: Alice, Kate, Dave, Tom
var sortedList=list.OrderBy(person => person.Age).ThenBy(person => person.Name).ToList();
jaki sposób można tego dokonać przy użyciu Kotlin?
To, co starałem (to oczywiście błędne, ponieważ wyjście z pierwszego „sortedBy” klauzula zostanie zastąpiona przez drugi co przekłada się na liście sortowane według nazwy tylko)
val sortedList = ArrayList(list.sortedBy { it.age }.sortedBy { it.name })) //wrong
Kotlin jest darem niebios – ElliotM