[英]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.