and*_*est 4 java linked-list arraylist kotlin
Java中最受欢迎的列表是ArrayList和LinkedList.
在科特林我看到ArrayList和List.是List实际上是一个LinkedList?例如
val list = listof("1st", "2nd")
Run Code Online (Sandbox Code Playgroud)
如果您使用listOf,您将获得某种List实现,使用只读List接口,包含您作为参数提供的元素.通过使用此功能,您暗示您不关心它是如何实现的.实际上,正如@Zabuza在这里的评论中指出的那样,它实际上是由一个java.util.ArrayList如果您使用的是JVM ,这可能仍然存在问题.Arrays.ArrayList类支持的,这是一个稍微不同的类.
如果你mutableListOf再次使用,你只是说你想要包含你实现的元素的东西MutableList,但实现取决于标准库.同样,这目前由an支持ArrayList,但这是一个实现细节.
如果确实需要,有几个函数可以显式返回更具体的类型.有arrayListOf,sortedSetOf,linkedMapOf,和一对夫妇更多-有不正好是一个linkedListOf,但你很可能实现它自己,如果你需要一个,不希望使用LinkedList构造函数.
如果有更改,您将更加通用listOf并且mutableListOf可以在以后在平台之间共享代码 - 因为这些是标准库的一部分,它们可以ArrayList在JVM上返回,但是如果您编译为JavaScript或Native ,则可以返回不同的平台特定实现.
它既不是 aLinkedList也不是ArrayList。基于源代码:
public fun <T> listOf(element: T): List<T> = java.util.Collections.singletonList(element)
Run Code Online (Sandbox Code Playgroud)
或者,对于多个元素:
public fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()
Run Code Online (Sandbox Code Playgroud)
最后一段代码调用ArraysUtilJVM,后者又调用Arrays.asList(),后者返回一个Arrays.ArrayList实例。但是,这是一个实现细节,将来可能会发生变化。重要的是生成的对象实现了List接口(即,它是不可变的)。
刚刚尝试打印类型,
val list = listOf("a")
println(list.javaClass)
Run Code Online (Sandbox Code Playgroud)
输出:类 java.util.Collections$SingletonList
val list = listOf("a", "b", "c")
println(list.javaClass)
Run Code Online (Sandbox Code Playgroud)
输出:类 java.util.Arrays$ArrayList
| 归档时间: |
|
| 查看次数: |
4764 次 |
| 最近记录: |