04-映射
8.1.3 映射
映射(Map)与集或列表有着明显的区别,映射中的每一项都是成对出现的,其中存储的每一个对象都包含一个键对象(key)和值对象(value),其中键对象是独一无二的,不允许重复,而值对象则允许重复。键对象决定了对象在集合中的存储位置,当从Map集合中检索元素时,只需要给出键对象就可以得到对应的值对象。
与Set和List一样,可以使用标准库中的方法来创建Map,如mapOf()和mutableMapOf()等。
val map= mapOf(1 to "Kotlin", 2 to "Java", 3 to "Node")
println(map) //输出{1=Kotlin, 2=Java, 3=Node}
//声明可变Map
var mapMutable = mutableMapOf(1 to "Kotlin", 2 to "Java", 3 to "Node")
mapMutable.put(4,"JavaScript")
println(mapMutable) //输出{1=Kotlin, 2=Java, 3=Node, 4=JavaScript}
与Java相比,Kotlin的Map实现类主要有HashMap和LinkedHashMap两个,暂不支持TreeMap、WeakHashMap和IdentifyHashMap等。HashMap和LinkedHashMap都是基于散列表实现的,其中,HashMap的插入和查询操作开销是固定的,而LinkedHashMap的查询和取值操作顺序是固定的,因而比HashMap更耗时。
除了上面的函数之外,Map的常用函数有以下几种。
- isEmpty():判断Map是否为空。
- containsKey():判断Map是否包含某个键对象。
- containsValue():判断Map是否包含某个值对象。
- get():判断Map中是否包含某个指定Key的元素,如果存在,则返回元素值;否则返回null。
- clear():清空Map的值。