簡體   English   中英

如何對自定義對象的ArrayList排序?

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

    }
}

我期望以下輸出:

  1. 艾哈邁德25
  2. 阿卜杜28
  3. fethi 28

根據您提供的示例,您想要按年齡(升序)然后按字母順序按名稱對集合進行排序。

您可以通過使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM