ArrayList <string>()与arrayListOf <string>()

时间:2019-05-16 10:43:46

标签: kotlin collections

我正在研究Kotlin的一些基础知识,发现了两种语法。

ArrayList<String>()

arrayListOf<String>()

由于两者都是Kotlin.Collections的一部分,所以两者之间有什么区别?

5 个答案:

答案 0 :(得分:2)

arrayListOf是一个函数,具有可选的可变长度参数

在不带参数的情况下使用它,没有区别

答案 1 :(得分:2)

arrayListOf<T>()主要是为了您的方便。 vararg函数通常会对性能造成影响(有时可以忽略不计),并且在arrayListOf(someElements...)arrayListOf()之间进行切换而没有这种便捷的方法,基本上可以将这个问题委托给您作为程序员。您必须了解它,并且必须将代码更改为ArrayList(),如果这样的影响正在影响您并且便利功能将不存在。

arrayListOf()基本上就是这样。它返回ArrayList()并被内联。这很方便,因此在arrayListOf(someElements)arrayListOf()之间来回切换时,您不必真正考虑它。

话虽如此:arrayListOf()ArrayList()之间没有区别,正如其他人已经提到的那样,并且arrayListOf(elements)是使用给定结构构造ArrayList的便利变量元素。

答案 2 :(得分:1)

arrayListOf<T>()

只是一个扩展函数,如下所示:

public inline fun <T> arrayListOf(): ArrayList<T> = ArrayList()

答案 3 :(得分:1)

它的功能是正确的,但是像这样使用

此处使用的函数中的set()arrayListOf()函数用于在给定索引处设置给定元素,并替换该索引处已经存在的任何元素

app.controller("myCtrl", function($scope) {
    $scope.firstNum = 6;
    $scope.lastNum = 7;
    $scope.result= $scope.firstNum * $scope.lastNum; // this change
});

输出

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)
  }
}

答案 4 :(得分:0)

创建空数组时,可以使用以下任一方法:

val emptyArray1 = ArrayList()
val emptyArray2 = arrayListOf()

但是从现有元素创建数组时,必须使用一个或另一个,这取决于现有元素是否已经在集合中,或者您要单独指定它们:

val arrayFromCollection = ArrayListOf(hashMap.keys)
val arrayFromElements = arrayListOf("1", "2", "3")

请注意,您可以使用spread运算符将现有集合作为单独的元素传递到arrayListOf中,但是如果该集合不是另一个数组,则还需要将其转换为数组。这可能不值得额外的冗长:

val arrayFromCollectionVerbose = arrayListOf(*hashMap.keys.toTypedArray())