首页 > 解决方案 > 如何初始化列表<列表> 在科特林?

问题描述

根据这里的 leetcode 问题,我需要返回List<List<Int>>Kotlin 提交的类型。我尝试使用listOf()但无法创建。我的另一个猜测是使用 List 类型的 LinkedList:

var result: List<List<Int>> = LinkedList<List<Int>>()

intelliJ 的想法对上述声明没有任何警告,但add()在结果变量上不可用。请让我知道我做错了什么。

List<List<Int>>我应该如何在 kotlin 中初始化空类型?

标签: kotlincollections

解决方案


add不适用于List。它适用于MutableList. LinkedList是 a MutableList,但是您List通过将其分配给 type 的变量来将其向上转换为普通类型List

如果您需要在此函数中使用 MutableList 或 LinkedList,您可以通过不声明result变量的类型来实现,因此它将隐含为 MutableList 或 LinkedList。当您从函数中返回它时,当您不再需要可变特性时,它将被隐式向上转换。

fun threeSum(nums: IntArray): List<List<Int>> {
    val output = mutableListOf<MutableList<Int>>()

    // logic

    return output
}

或者

fun threeSum(nums: IntArray): List<List<Int>> {
    val output = LinkedList<LinkedList<Int>>()

    // logic

    return output
}

LinkedList 是 MutableList 的一种特定类型,与默认的 MutableList (ArrayList) 相比,它在访问中间特定元素时更重且更慢,但在开始/结束时访问元素时更快,在插入或删除元素时更快。您通常只想mutableListOf用来实例化可变列表。


推荐阅读