刚开始和Kotlin合作我很喜欢但是。。。我无法理解这种html" target="_blank">语言中的列表和数组。我对编程并不陌生,也不需要解释数组是什么。我不明白的是。
>
列表和数组之间有什么区别?它们看起来非常相似,您可以使用[索引]访问它们,也可以以几乎相同的方式使用它们。如果一个列表是不可变的,那么它们就更加相同了,所以。。。有什么区别?假设列表不是链表,它们都在O(1)访问时间内工作。
如果我使用列表;可变和不可变之间有什么区别?我什么时候可以编辑内容?我什么时候可以改变长度?
对于同一件事,似乎有许多重叠和混乱的名称。List,ListOf,ArrayList,IntArray,IntArray<有人能把所有这些都列一个详尽的清单,并在你使用每一个时给出一些经验法则吗。具体来说,我发现不可变空列表的概念非常令人困惑。那到底是用来干什么的?
如何初始化这些东西?
抱歉问了这么长的问题,
谢谢
来自C/C的大量不同的名称非常令人困惑。
那么也许这可以给出具体的C类比:
>
Array
类似于std::array
(尽管编译时不需要知道长度),或者类似于C数组,除了它存储长度并且所有访问都进行边界检查。
ArrayList
就像std::向量
(同样,所有访问都是边界检查的)。
MutableList
是ArrayList
的接口(如SequenceContainer
)。
List
是MutableList
的只读部分。
泛型的工作方式与C模板非常不同,特别是没有专门化:在C中,为std::vector生成单独的代码
>
List
是描述一些常见列表操作的接口,而Array
是一个类。从内存的角度来看,Array
是内存中大小不变的连续区域,这就是为什么创建后不能更改Array
的大小,但可以更改其元素,另一方面List
可以以不同的方式实现,这意味着内存结构可以不同,最常见的实现是ArrayList
,其中数组用于存储元素,一旦填充了数组,它将被更改为更大的数组,旧数组的内容将添加到新数组中,另一个实现是LinkedList
,其中节点指向列表中的下一个元素。从性能角度看,Array
总是比List
的任何实现都要快,但它也有很大的局限性
List
和MutableList
之间的区别在于,当您使用MutableList
时,您可以更改该列表的元素(添加或删除其中的元素),而当使用immutableList
时,您不能添加或删除其中的元素。这两个列表都允许您更改这些元素的属性。
将这个答案分为三个答案:
List
是扩展Collection
接口的接口,提供基本的公共列表操作,MutableList
扩展List
接口,以及MutableCollection
接口添加更改该列表元素所需的方法,listOf
是创建List
并用给定参数填充它的函数,通过使用listOf
我们不需要指定将使用List
的哪个实现,例如在JVM上List
由java支持。util。数组。ArrayList
(与java.util.ArrayList
不同),而在JavaScript方面,它可能由Array
支持(对这句话持保留态度,因为我从未与Kotlin for JS合作过)ArrayList
是java的类型别名。util。ArrayList
,它没有什么特别之处,它是Java的列表
接口的实现,可变列表
由JVM上的这个实现支持
Array
相当于Java的数组,也没有什么特别之处,IntArray
和其他原语数组公司被用来弥补kotlin中原语类型的不足,数组
您可以在kotlin存储库中查看自己的所有集合层次结构
这两个代码片段有什么区别?以及如何决定使用哪一个? 和 有了这两个代码,我可以像这样通过索引访问它
在Java中,我们通常在方法和自动生成的文档出现之前使用。对科特林不能这么做。默认情况下,此功能是否可用?我怎样才能打开它?
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
如何在 Kotlin 中制作 2D Int 数组?我正在尝试将此代码转换为 Kotlin: 这是我尝试过的一个尝试,第一个2D阵列不起作用,但我让1D阵列起作用了:
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
静态编程语言是否支持已命名的regex组? 命名的regex组看起来像这样: