【发布时间】:2020-08-12 20:31:37
【问题描述】:
我有以下示例数据 -->
物理学 --> 93
化学 --> 72
数学 --> 84
生物学 --> 67
英语 --> 78
我想将此数据存储在ArrayList 中(因为我想让它调整大小)
那我想在控制台打印出来。
我该怎么做?
【问题讨论】:
标签: kotlin arraylist multidimensional-array
我有以下示例数据 -->
物理学 --> 93
化学 --> 72
数学 --> 84
生物学 --> 67
英语 --> 78
我想将此数据存储在ArrayList 中(因为我想让它调整大小)
那我想在控制台打印出来。
我该怎么做?
【问题讨论】:
标签: kotlin arraylist multidimensional-array
正如 Tenfour04 所指出的,这是一个X-Y problem,因为最合适的数据结构根本不是列表,而是地图:
val marks = mapOf("Physics" to 93, "Chemistry" to 72,
"Mathematics" to 84, "Biology" to 67,
"English" to 78)
for ((subject, mark) in marks)
println("Subject --> $subject, Mark --> $mark")
除了看起来更自然、更简洁的代码之外,这还可以确保您不会两次存储相同的主题,并且每个主题都只有一个标记。 (列表无法表达或强制执行这些条件。)它提供了正确的类型(String 主题和 Int 标记,您可以根据需要对其进行算术运算,例如计算平均值) .而且查找特定主题的效率要高得多。
而且,与列表一样,地图可以调整大小:如果您将其设为可变地图,那么您可以根据需要添加、更新和删除项目。
关于列表:Kotlin 没有多维列表或数组。相反,它有 of 个列表,这是一个粗略的近似,但设置和更新更复杂,效率也稍低。在某些情况下肯定需要它们——但这不是其中之一!
【讨论】:
最好的方法是创建一个ArrayList 的ArrayList
外部ArrayList 的每个元素本身都是大小为2 的ArrayList,存储Subject 和Marks
fun main() {
val arrayList: ArrayList<ArrayList<Any>> = arrayListOf(arrayListOf("Biology", 74),
arrayListOf("Chemistry", 49), arrayListOf("Physics", 92), arrayListOf("Mathematics", 82))
for (element in arrayList) {
println("Subject --> ${element.get(0)}, Marks --> ${element.get(1)}")
}
}
控制台输出 -->
Subject --> Biology, Marks --> 74
Subject --> Chemistry, Marks --> 49
Subject --> Physics, Marks --> 92
Subject --> Mathematics, Marks --> 82
【讨论】: