Kotlin 列表和数组

标签 kotlin

这个问题在这里已经有了答案:





Difference between List and Array types in Kotlin

(3 个回答)


3年前关闭。




刚开始使用 Kotlin,我喜欢它,但是......
我无法理解这种语言中的 Lists 和 Arrys。
我对编程并不陌生,不需要解释什么是数组。我不明白的是。

  • 列表和数组有什么区别?它们看起来非常相似,您使用 a[index] 访问它们并以几乎相同的方式使用它们。如果一个列表是不可变的,那么它们就更加相同了,那么......有什么区别?假设列表不是链表,它们都在 O(1) 访问时间内工作。
  • 如果我使用列表;可变和不可变有什么区别?我什么时候可以编辑内容?我什么时候可以更改长度?
  • 同一事物似乎有许多重叠和令人困惑的名称。列表、ListOf、ArrayList、IntArray、intArray....
    有人可以列出所有它们的详尽 list ,并在您使用每一个时给出某种经验法则。具体来说,我发现不可变空列表的概念非常令人困惑。那到底是用来做什么的?
  • 你如何初始化这些东西?

  • 对不起,很长的问题,

    谢谢。

    最佳答案

  • 第一个区别是 List是描述一些常见列表操作的接口(interface),而Array是一类。从内存的角度来看,Array是内存中大小不变的连续区域,这就是为什么您不能更改 Array 的大小的原因创建后,但您可以更改其元素,另一方面 List可以用不同的方式实现,这意味着内存结构可以不同,最常见的实现是ArrayList其中数组用于存储元素,一旦数组被填充,它就会被更大的数组改变,旧数组的内容被添加到新数组中,另一种实现是LinkedList ,您的节点指向列表中的下一个元素。从性能角度 Array总是比 List 的任何实现都快但它也受到更多限制。
  • List 之间的区别和 MutableList是当你使用 MutableList您可以更改该列表的元素(添加或从中删除元素),而使用不可变 List您不能从中添加或删除元素。这两个列表都允许您更改这些元素的属性。
  • 将这个答案分为三个答案:
  • List是扩展 Collection 的接口(interface)接口(interface),提供基本的常用列表操作,MutableList扩展 List接口(interface)以及MutableCollection接口(interface)添加更改该列表元素所需的方法,listOf是创建 List 的函数并用给定的参数填充它,使用 listOf我们不需要指定 List 的哪个实现将被使用,例如在 JVM List 上由 java.util.Arrays.ArrayList 支持(与 java.util.ArrayList 不同),而在 JavaScript 方面,它可能由 Array 支持(请谨慎对待此声明,因为我从未与 Kotlin 合作过 JS)
  • ArrayList类型别名 java.util.ArrayList ,没有什么特别的,它是Java的List的实现接口(interface), MutableList由 JVM 上的此实现支持。
  • Array相当于Java的数组,也没什么特别的,IntArray等原始数组公司用来弥补kotlin中原始类型的不足,Array<Int>Integer[] 相同在 Java 中,而 IntArrayint[] 相同.相同的逻辑适用于所有其他变体。使用原始类型可以获得更好的性能,但在现代计算机上的大多数情况下可以忽略差异,但如果您确实有很多数据,您应该尽可能使用原始类型。

  • 您可以在 kotlin repository 上查看自己的所有集合层次结构
  • 使用内置的 Kotlin 函数,如 listOf , arrayOf , mutableListOf ,这不是必须的,但遵循最佳实践总是好的。
  • 关于Kotlin 列表和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301263/

    相关文章:

    android - 在 Kotlin 中使用 TypeAdapter 实现 TypeAdapterFactory

    kotlin - 有官方的Kotlin风格指南吗?

    json - Jackson Kotlin - 反序列化 JsonNode

    kotlin - 如何从函数调用挂起函数

    database - 将图像保存在房间数据库中

    android - 对Kotlin协程感到困惑

    android - Android Kotlin-淡出 Activity 并设置持续时间

    spring-boot - Kotlin spring-boot @ConfigurationProperties

    kotlin - 带有可选字段的Kotlin DSL

    javascript - String::toByteArray() 无法在 Kotlin [js] 中编译