ArrayList(<String>) vs arrayListOf<String>()



我正在通过一些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())

相关内容

最新更新