在Kotlin中打印数组时,它不打印整数,而是打印其他字符

时间:2018-08-09 06:57:31

标签: arrays kotlin

package MiscellaneousProjects

import java.util.*

class Numbers(val numbers: Int){
}

fun ClosedRange<Int>.random() = Random().nextInt((endInclusive + 1) - start) +  start // Function to randomly generate a number

fun main(args: Array<String>) {
    var list = arrayListOf<Numbers>()
    for(i in 1..10){
        val random = Random()
        list.add(Numbers((0..100).random())) // Adds the numbers to an array
    }

    var sortedList = list.sortedWith(compareBy({ it.numbers })) // Sorts the elements from least to greatest

    for(element in sortedList){
        println(element.numbers) // Prints the individual entries
    }

    println(sortedList)

}

以下代码选择一个从0到100的数字并将其添加到数组中。

我正在使用sortedWith和compareBy函数从最大到最小对数字进行排序。但是,当我打印“ sortedList”时,会看到以下类型的条目:“ MiscellaneousProjects.Numbers @ 30f39991,MiscellaneousProjects.Numbers @ 452b3a41”。

但是,每当我打印数组中的各个元素时,它都会输出正确的数字。

有人可以告诉我代码中的错误吗?

2 个答案:

答案 0 :(得分:1)

Numbers使用data class(基本上有内置的toString()可能已经满足您的需求),或者只是在{ {1}}类以返回toString(),例如

Numbers

答案 1 :(得分:0)

问题是您的toString类依赖于Numbers的默认实现,该默认实现继承自Object并显示您看到的内容(即{{1 }},您可以找到here)。

要打印出更有意义的内容,您可以覆盖<class_name>@<hash_code>方法(或Kotlin中的toString)以返回您期望的fun