当前位置: 首页 > 知识库问答 >
问题:

Kotlin实例化不可变列表

严正初
2023-03-14

我已经开始使用Kotlin作为java的替代品,并且非常喜欢它。然而,如果不跳回java领域,我就无法找到解决方案:

我有一个Iterable

可能的(如果不满意)解决方案

val valueList = arrayListOf(values)
// iterate through valuelist

或者

fun copyIterableToList(values: Iterable<SomeObject>) : List<SomeObject> {
    var outList = ArrayList<SomeObject>()
    for (value in values) {
        outList.add(value)
    }
    return outList
}

除非我有误解,否则它们最终会出现mutablelist,这很有效,但感觉像是一种变通方法。是否有类似的immutableListOf(Iterable)


共有1个答案

钮承恩
2023-03-14

在Kotlin中,列表

一般来说,List

更接近问题,toList()Iterable扩展函数

示例

val iterable: Iterable<Int> = listOf(1, 2, 3)
val list: List<Int> = iterable.toList()

 类似资料:
  • 看起来很简单,但是,如何初始化 Kotlin 的以清空? 我可以用这种方式破解它,但我肯定有更简单的方法:

  • 我有一个没有扩展可串行化或可外部化接口的类,但在netbeans中使用FindBugs时仍然会遇到错误。有人能告诉我如何解决这个问题吗? 这是我的课 FindBug中的Bug:类分析器定义了一个非瞬时的非序列化实例字段objAnalyzerVar,对于objAnalyzerDataTypeInfo也是如此;

  • 考虑以下代码: 现在扩展了一个实现接口的类。类和是带有一堆getter和setter的POJOS。FindBugs抱怨和字段说: 这个Serializable类定义了一个非基元实例字段,它既不是瞬态的、Serializable的,也不java.lang.Object的,并且似乎没有实现Externalizable接口或readObject()和WriteObject()方法。 好吧,所以一切都很好

  • 我正在学习Kotlin,它看起来很可能我想在下一年把它作为我的主要语言。然而,我不断得到矛盾的研究,Kotlin有或没有不可变的集合,我试图弄清楚我是否需要使用Google Guava。 有人能给我一些指导吗?它是否默认使用不可变集合?哪些运算符返回可变或不可变的集合?若否,有否计划实施?

  • 我希望我的类有一个字段,该字段返回所有公共访问的不可变列表,但在对象实例中,我希望列表是可变的,以便我可以向其添加元素。 我试过了,但不确定这是否被视为良好做法?

  • 我有一个Java/Kotlin互操作问题。一个Kotlin不可变列表被编译成一个普通的java.util.ArrayList,它是可变的! 静态编程语言(库): Java(消费者): 如何使我的 Kotlin 类从 Java 的角度来看也是完全不可变的?