列表
和数组
类型有什么区别?
似乎可以用它们进行相同的操作(循环、筛选表达式等。),在行为或用法上有什么区别吗?
val names1 = listOf("Joe","Ben","Thomas")
val names2 = arrayOf("Joe","Ben","Thomas")
for (name in names1)
println(name)
for (name in names2)
println(name)
数组和列表(由list
及其子类型mutableList
表示)有许多不同之处,以下是最显著的:
>
array
是一个已知实现的类:它是一个存储项的顺序固定大小的内存区域(在JVM上,它由Java数组表示)。
List
和MutableList
是具有不同实现方式的接口:ArrayList
,LinkedList
等,在具体实现中定义了列表的内存表示和操作逻辑,如LinkedList
中的索引经过链接需要O(n)时间,而ArrayList
将其项存储在动态分配的数组中。
val list1: List<Int> = LinkedList<Int>()
val list2: List<Int> = ArrayList<Int>()
数组
是可变的(可以通过对它的任何引用来更改它),但是列表
没有修改方法(它既是mutableList
的只读视图,也是不可变的列表实现)。
val a = arrayOf(1, 2, 3)
a[0] = a[1] // OK
val l = listOf(1, 2, 3)
l[0] = l[1] // doesn't compile
val m = mutableListOf(1, 2, 3)
m[0] = m[1] // OK
数组有固定的大小,不能扩展或收缩,保留标识(您需要复制一个数组来调整它的大小)。对于列表,mutableList
具有add
和remove
函数,因此可以增加和减少其大小。
val a = arrayOf(1, 2, 3)
println(a.size) // will always be 3 for this array
val l = mutableListOf(1, 2, 3)
l.add(4)
println(l.size) // 4
数组
在t
上是不变的(数组
不是数组
),mutableList
也是一样的,但是列表
是协变的(列表
是列表
)。
val a: Array<Number> = Array<Int>(0) { 0 } // won't compile
val l: List<Number> = listOf(1, 2, 3) // OK
数组针对基元进行了优化:有单独的intarray
、doublearray
、charray
等,它们映射到Java基元数组(int[]
、double[]
、char[]
),而不是装箱的(array
映射到Java的integer[]
)。列表通常没有针对原语优化的实现,尽管一些库(在JDK之外)提供了原语优化的列表。
list
和mutablelist
是映射的类型,在Java互操作性方面具有特殊的行为(从Kotlin看来,Java的list
是list
或mutablelist
)。数组也是映射的,但它们有Java互操作性的其他规则。
批注中使用了某些数组类型(基元数组、数组
和带有枚举类
条目的数组),批注有一个特殊的数组文字语法。在批注中不能使用列表和其他集合。
至于用法,好的实践是除了代码的性能关键部分外,在任何地方都更喜欢使用列表而不是数组,这与Java的道理是一样的。
问题内容: Java中的List和Array有什么区别?或Array和Vector之间的区别! 问题答案: 通常(在Java中),数组是一种数据结构,通常由存储对象集合的顺序存储器组成。 是Java中的接口,这意味着它可能具有多种实现。这些实现之一是,这是一个使用数组作为数据结构来实现接口行为的类。 还有许多其他实现该接口的类。查看它们的一种简单方法是查看以下位置的Javadoc :http :
2.5 列表和元组类型 整数类型、浮点数类型和布尔类型都是最简单的“原子”数据类型,因为这些类型的值 是不可分割的基本数据项。而字符串类型稍微有点复杂,因为字符串可以看成是由许多单字 符组成的有序的集合体,我们可以通过索引操作来深入到字符串内部访问其成员。不过,通 常我们仍然将字符串类型归为简单的基本类型,毕竟构成字符串的成员是非常简单的单字 符。 对于单个数据,我们可以用一个变量来存储。假如程序
本文向大家介绍python中列表和元组的区别,包括了python中列表和元组的区别的使用技巧和注意事项,需要的朋友参考一下 如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来存放一系列的数据,事实真是如此吗? 看起来除了元组不可变之外,列表完全可
问题内容: 您能帮助我了解 无界通配符类型列表 和 原始类型列表 之间的区别吗? 除此之外,有人可以帮助我了解什么是有 界类型参数列表 ? 问题答案: 以下是这三个的摘要: :没有类型参数的列表。它是一个列表,其元素可以是任何类型- 元素可以是不同类型 。 :具有无限制类型参数的列表。它的元素是特定但未知的类型。 元素必须都是相同的类型 。 :带有类型参数称为的列表。所提供的类型必须是extens
我在核心Java一书中读到了下面的片段。 将数组列表分配为新的ArrayList<'Employee>(100)//容量为100 与分配新数组不同,因为new Employee[100]//大小为100 数组列表的容量和数组的大小之间有一个重要的区别。如果分配一个数组有100个条目,那么该数组就有100个插槽,可以使用。一个容量为100个元素的数组列表有可能容纳100个元素(事实上,以额外重新分配
我试图创建动态下拉,其值是从使用微服务的查找表之一填充,但我已经尝试了许多方式相同,到目前为止,我还没有成功地使其工作。 下面的代码用于调用webservice 这是我的对象类型 仅用于显示目前运行的以下代码 我做了什么我尝试调用webservice在多种方式调用它,尝试铸造服务响应直接使用JSON字符串响应和可能的事情我尝试过。 你能在这里帮忙吗?我们将不胜感激。