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”。
但是,每当我打印数组中的各个元素时,它都会输出正确的数字。
有人可以告诉我代码中的错误吗?
答案 0 :(得分:1)
为Numbers
使用data class
(基本上有内置的toString()
可能已经满足您的需求),或者只是在{ {1}}类以返回toString()
,例如
Numbers
答案 1 :(得分:0)
问题是您的toString
类依赖于Numbers
的默认实现,该默认实现继承自Object
并显示您看到的内容(即{{1 }},您可以找到here)。
要打印出更有意义的内容,您可以覆盖<class_name>@<hash_code>
方法(或Kotlin中的toString
)以返回您期望的fun