我正在研究Kotlin的一些基础知识,发现了两种语法。
ArrayList<String>()
和
arrayListOf<String>()
由于两者都是Kotlin.Collections
的一部分,所以两者之间有什么区别?
答案 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())