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

静态编程语言列表和数组[重复]

邓毅
2023-03-14

刚开始和Kotlin合作我很喜欢但是。。。我无法理解这种html" target="_blank">语言中的列表和数组。我对编程并不陌生,也不需要解释数组是什么。我不明白的是。

>

  • 列表和数组之间有什么区别?它们看起来非常相似,您可以使用[索引]访问它们,也可以以几乎相同的方式使用它们。如果一个列表是不可变的,那么它们就更加相同了,所以。。。有什么区别?假设列表不是链表,它们都在O(1)访问时间内工作。

    如果我使用列表;可变和不可变之间有什么区别?我什么时候可以编辑内容?我什么时候可以改变长度?

    对于同一件事,似乎有许多重叠和混乱的名称。List,ListOf,ArrayList,IntArray,IntArray<有人能把所有这些都列一个详尽的清单,并在你使用每一个时给出一些经验法则吗。具体来说,我发现不可变空列表的概念非常令人困惑。那到底是用来干什么的?

    如何初始化这些东西?

    抱歉问了这么长的问题,

    谢谢

  • 共有2个答案

    端木望
    2023-03-14

    来自C/C的大量不同的名称非常令人困惑。

    那么也许这可以给出具体的C类比:

    >

  • Array类似于std::array(尽管编译时不需要知道长度),或者类似于C数组,除了它存储长度并且所有访问都进行边界检查。

    ArrayList就像std::向量(同样,所有访问都是边界检查的)。

    MutableListArrayList的接口(如SequenceContainer)。

    ListMutableList的只读部分。

    泛型的工作方式与C模板非常不同,特别是没有专门化:在C中,为std::vector生成单独的代码

  • 罗学真
    2023-03-14

    >

  • 第一个区别是List是描述一些常见列表操作的接口,而Array是一个类。从内存的角度来看,Array是内存中大小不变的连续区域,这就是为什么创建后不能更改Array的大小,但可以更改其元素,另一方面List可以以不同的方式实现,这意味着内存结构可以不同,最常见的实现是ArrayList,其中数组用于存储元素,一旦填充了数组,它将被更改为更大的数组,旧数组的内容将添加到新数组中,另一个实现是LinkedList,其中节点指向列表中的下一个元素。从性能角度看,Array总是比List的任何实现都要快,但它也有很大的局限性
  • ListMutableList之间的区别在于,当您使用MutableList时,您可以更改该列表的元素(添加或删除其中的元素),而当使用immutableList时,您不能添加或删除其中的元素。这两个列表都允许您更改这些元素的属性。

    将这个答案分为三个答案:

    • List是扩展Collection接口的接口,提供基本的公共列表操作,MutableList扩展List接口,以及MutableCollection接口添加更改该列表元素所需的方法,listOf是创建List并用给定参数填充它的函数,通过使用listOf我们不需要指定将使用List的哪个实现,例如在JVM上Listjava支持。util。数组。ArrayList(与java.util.ArrayList不同),而在JavaScript方面,它可能由Array支持(对这句话持保留态度,因为我从未与Kotlin for JS合作过)
    • ArrayListjava的类型别名。util。ArrayList,它没有什么特别之处,它是Java的列表接口的实现,可变列表由JVM上的这个实现支持
    • Array相当于Java的数组,也没有什么特别之处,IntArray和其他原语数组公司被用来弥补kotlin中原语类型的不足,数组

    您可以在kotlin存储库中查看自己的所有集合层次结构

  •  类似资料:
    • 这两个代码片段有什么区别?以及如何决定使用哪一个? 和 有了这两个代码,我可以像这样通过索引访问它

    • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

    • 在Java中,我们通常在方法和自动生成的文档出现之前使用。对科特林不能这么做。默认情况下,此功能是否可用?我怎样才能打开它?

    • 如何在 Kotlin 中制作 2D Int 数组?我正在尝试将此代码转换为 Kotlin: 这是我尝试过的一个尝试,第一个2D阵列不起作用,但我让1D阵列起作用了:

    • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

    • 静态编程语言是否支持已命名的regex组? 命名的regex组看起来像这样: