[英]How can I sort an ArrayList of custom objects?
我想按年齡對ArrayList
進行排序,然后,如果兩個人的年齡相同,則按字母順序按名稱排序。
這是我的代碼:
import java.util.*
import kotlin.collections.ArrayList
fun main(args:Array<String>){
var listName=ArrayList<person>()
listName.add(person("ahmed",25))
listName.add(person("Fethi",28))
listName.add(person("abdou",28))
Collections.sort(listName)
for(person in listName){
println("the name:${person.name} and the age is:${person.age}")
}
}
class person(
var name:String?=null,
var age:Int=null
):Comparable<person> {
override fun compareTo(other: person): Int {
return this.age!!-other.age!!
}
}
我期望以下輸出:
根據您提供的示例,您想要按年齡(升序)然后按字母順序按名稱對集合進行排序。
您可以通過使用sortedWith
擴展功能(接受Comparator
)在Kotlin中輕松實現:
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(
Person("Ahmed", 25),
Person("Fethi", 28),
Person("Abdou", 28)
)
val comparator = Comparator.comparingInt(Person::age).thenComparing(Person::name)
val sortedPeople = people.sortedWith(comparator)
println(sortedPeople)
}
結果:
[Person(name=Ahmed, age=25), Person(name=Abdou, age=28), Person(name=Fethi, age=28)]
注意:我對Person
類和main
方法進行了一些改動,以遵循Kotlin約定和關於可變變量和可為空類型的最佳實踐
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.