如何在Kotlin中创建2D ArrayList?

问题描述

我有以下示例数据->

物理-> 93
化学-> 72
数学-> 84
生物学-> 67
英语-> 78



我想将此数据存储在ArrayList中(因为我想使其可调整大小)

然后我要在控制台中将其打印出来。

我该怎么办?

解决方法

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的{​​{1}}

外部ArrayList的每个元素本身将是大小为2的ArrayList,存储ArrayListSubject

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)}")
    }
}