我正在通过一些Kotlin基础知识,并找到了两个语法。
ArrayList<String>()
和
arrayListOf<String>()
这两者之间有什么区别,因为两者都是Kotlin.Collections
的一部分?
arrayListOf<T>()
主要是为了方便。vararg
-函数通常会带有(有时可以忽略的(性能影响,而arrayListOf(someElements...)
和arrayListOf()
之间没有这种便利方法将基本上将这个问题委派给您作为程序员。您必须知道它,如果这种影响会影响您,并且如果不存在这种便利功能,则必须将该代码更改为ArrayList()
。
arrayListOf()
基本上就是这样。它返回 ArrayList()
,并在内衬上。这很方便,因此当您在arrayListOf(someElements)
和arrayListOf()
之间来回切换时,您不必真正考虑它。
说: arrayListOf()
和 ArrayList()
之间没有区别,而其他人也已经提到了,而 arrayListOf(elements)
是构造具有给定元素的ArrayList
的便利变体。
arrayListOf
是一个函数,具有可选的变量长度参数
在没有参数的情况下使用它,没有差异
arrayListOf<T>()
只是一个看起来像这样的扩展功能:
public inline fun <T> arrayListOf(): ArrayList<T> = ArrayList()
在此处,在函数中使用的set((函数arraylistof((的函数用于在指定索引处设置给定元素,如果在该索引上已经存在任何元素
,则替换fun main(args: Array<String>){
val list: ArrayList<String> = arrayListOf<String>()
list.add("Ajay")
list.add("Vijay")
list.add("Prakash")
println(".......print list.......")
for (i in list) {
println(i)
}
println(".......arrayList.set(2,"Rohan").......")
list.set(2,"Rohan")
println(".......print ArrayList.......")
for (i in list) {
println(i)
}
}
输出
.......print list.......
Ajay
Vijay
Prakash
.......list.set(2,"Rohan").......
.......print list.......
Ajay
Vijay
Rohan
创建空数组时,您可以使用:
val emptyArray1 = ArrayList()
val emptyArray2 = arrayListOf()
但是,当创建现有元素的数组时,您必须使用一个或另一个数组,具体取决于现有元素是否已经在集合中,或者您想单独指定它们:
val arrayFromCollection = ArrayList(hashMap.keys)
val arrayFromElements = arrayListOf("1", "2", "3")
请注意,您可以使用传播运算符将现有集合作为单个元素传递到ArrayListof中,但是如果该集合是其他数组以外的其他内容,则还需要将其转换为数组。这可能不值得额外的详细性:
val arrayFromCollectionVerbose = arrayListOf(*hashMap.keys.toTypedArray())