array和arrayOf,hashmap和hashmapOf有什么区别?

时间:2018-06-27 00:22:34

标签: kotlin

不同的集合声明方式之间有什么区别?

我想知道两者之间的区别:

  • arrayarrayOf
  • hashmaphashmapOf

enter image description here

2 个答案:

答案 0 :(得分:2)

ArrayHashmap是类ArrayHashmap的构造函数。

Array(size: Int, init: (Int) -> T)
HashMap(initialCapacity: Int, loadFactor: Float = 0.0f)
HashMap(initialCapacity: Int)

它们用于进行具有特定大小设置的集合。在通常情况下,您将不需要它们。

// same as val arr = arrayOf(0, 2, 4, 8)
val arr = Array(4, index -> index * 2)

// map with initial capacity 8, which means that the map will prepare memory for 8 elements at the beginning.
val map = HashMap(8)

arrayOfmapOf是返回一个新集合的函数,该集合具有与参数相同的元素

inline fun <reified T> arrayOf(vararg elements: T): Array<T> (source)
fun <K, V> hashMapOf(vararg pairs: Pair<K, V>): HashMap<K, V> (source)

val arr1 = arrayOf(1, 2, 3, 4, 5, 6)
val arr2 = arrayOf("D", "E", "FG", "H")
val map1 = mapOf("a" to 2, "b" to 3)
val map2 = mapOf(4 to "SDF", 7 to "E", 8 to "T")

答案 1 :(得分:0)

Kotlin集合具有三种类型ListSetMap。这些集合是可变的且不可变的。映射是作为键值对的Hashmap。

以下是Kotlin文档中的定义:

列表:

  

元素的一般有序集合。此界面中的方法   仅支持对列表的只读访问;读/写访问权限是   通过MutableList接口支持。

val numbers: MutableList<Int> = mutableListOf(1, 2, 3)

设置:

  

不支持的元素的一般无序集合   重复元素。此接口中的方法仅支持只读   进入集合;通过以下方式支持读/写访问   MutableSet接口。

val animals = mutableSetOf("Lion", "Dog", "Cat")

地图:

  

一个包含对象对(键和值)和   支持有效地检索与每个键对应的值。   映射键是唯一的;该地图的每个键仅包含一个值。   该接口中的方法仅支持对地图的只读访问;   通过MutableMap界面支持读写访问。

val populations = mutableMapOf(
        Pair("Toronto", 3000),
        Pair("Windsor", 400)
)

现在mutableListOfmutableSetOfmutableMapOflistOfsetOfmapOf之间的区别是可变性。您可以将值添加到前面带有mutable关键字的集合中,而不能将值添加到前面没有mutable关键字的集合中。

以下是不可变集合的示例:

var nums = listOf(1, 2, 3, 4)

var names = setOf("Bob", "John", "Elizabeth")

var population = mapOf(
        Pair("Windsor", 2000),
        Pair("Toronto", 50000)
)

哈希图:

HashMap是基于MutableMap接口的Kotlin集合类。它以键值对的形式存储数据。

val hashMap:HashMap<Int,String> = HashMap<Int,String>()

数组

  

表示一个数组(特别是在针对JVM时的Java数组   平台)   *可以使用[arrayOf],[arrayOfNulls]和[emptyArray]创建数组实例

参考:https://pandas.pydata.org/pandas-docs/version/0.18/generated/pandas.Series.empty.html