Kotlin Map是一个界面和元素的通用集合。 Map接口以键和值对的形式保存数据。Map键是唯一的,每个键仅保留一个值。键和值可以是不同的对,例如<Int,Int>,<Int,String>,<Char,String>等。此接口是不可变的,大小固定,其方法支持只读访问。
要使用Map接口,无涯教程需要使用其名为mapOf() 或 mapOf<k,v>()函数。
interface Map<K, out V> (source)
Properties | Description |
---|---|
abstract val entries: Set<Entry<K, V>> | 返回当前Map所有键值对。 |
abstract val keys: Set<K> | 返回当前Map中所有键。 |
abstract val values: Collection<V> | 返回当前Map中所有值,可能包含重复的值。 |
Map界面中有几个函数可用。下面介绍了Map接口的一些函数。
Functions | Description |
---|---|
fun <K, V> Map<key, value>.getValue(key: K): V | 根据键返回值。 |
operator fun <V, V1 : V> Map<in String, V>.getValue( thisRef: Any?, property: KProperty<*> ): V1 | 从当前只读Map返回给定对象的属性值。 |
operator fun <K, V> Map<out K, V>.contains(key: K): Boolean | 检查Map是否包含键 |
fun <K> Map<out K, *>.containsKey(key: K): Boolean | 如果Map包含指定的键,则返回true。 |
fun <K, V> Map<K, V>.containsValue(value: V): Boolean | 如果Map包含指定的值,则返回true。 |
fun <K, V> Map<out K, V>.getOrDefault( key: K, defaultValue: V ): V | 返回Map键给定的值,如果不包则返回默认值。 |
fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>> | 创建一个Iterable实例,包装原始Map,并迭代。 |
fun <K, V> Map<out K, V>.asSequence(): Sequence<Entry<K, V>> | 创建一个Sequence实例,包装当前Map并在迭代后返回其条目。 |
operator fun <K, V> Map<out K, V>.iterator(): Iterator<Entry<K, V>> | 在Map中的条目上返回一个Iterator。 |
operator fun | 从Map中删除指定键。 |
operator fun <K, V> Map<out K, V>.minus( keys: Iterable<K> ): Map<K, V> | 返回除了keys外的所有元素。 |
operator fun <K, V> Map<out K, V>.minus( keys: Sequence<K> ): Map<K, V> | 返回除了keys外的所有元素。 |
operator fun <K, V> Map<out K, V>.plus( pair: Pair<K, V> ): Map<K, V> | 添加或替换给定键值对。 |
operator fun <K, V> Map<out K, V>.plus( pairs: Iterable<Pair<K, V>> ): Map<K, V> | 添加或替换给定键值对。 |
operator fun <K, V> Map<out K, V>.plus( pairs: Sequence<Pair<K, V>> ): Map<K, V> | 添加或替换给定键值对。 |
让无涯教程创建一个使用mapOf <k,v>()函数声明和遍历map值的示例。在此示例中,无涯教程创建Int的键和String类型的值。
fun main(args: Array<String>){ val myMap = mapOf<Int,String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println(myMap[key]) } }
输出:
Ajay Vijay Learnfk
更具体地说,无涯教程可以提供通用类型Map,例如myMap:Map <k,v> = mapOf <k,v>()。
fun main(args: Array<String>){ val myMap: Map<Int, String> = mapOf<Int,String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk
如果无涯教程不能指定Map Interface的任何键和值类型,那么它可以采用不同类型的键和值。这是因为所有类内部都使用<Any,Any>类型。例如:
fun main(args: Array<String>){ val myMap = mapOf(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk","ram" to "Ram", "two" to 2) for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk Element at key ram = Ram Element at key two = 2
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.getValue(4).......") println(myMap.getValue(4)) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk .....myMap.getValue(4)....... Vijay
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.contains(3).......") println( myMap.contains(3)) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk .....myMap.contains(3)....... true
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.containsKey(2)......") println(myMap.containsKey(2)) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.containsKey(2)...... false
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.containsValue(\"Ajay\")......") println(myMap.containsValue("Ajay")) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.containsValue("Ajay")...... true
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.get(1).......") println(myMap.get(1)) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk .....myMap.get(1)....... Ajay
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.getOrDefault(3, \"Vijay\")......") println(myMap.getOrDefault(3, "Vijay")) }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.getOrDefault(3, "Vijay")...... Learnfk
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".......myMap.asIterable().....") for(itr in myMap.asIterable()){ println("key = ${itr.key} value = ${itr.value}") } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk .......myMap.asIterable()..... key = 1 value = Ajay key = 4 value = Vijay key = 3 value = Learnfk
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.iterator()......") for(itr1 in myMap.iterator()){ println("key = ${itr1.key} value = ${itr1.value}") } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.iterator()...... key = 1 value = Ajay key = 4 value = Vijay key = 3 value = Learnfk
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.minus(4)......") for(m in myMap.minus(4)){ println(myMap[m.key]) } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.minus(4)...... Ajay Learnfk
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.plus(Pair(5, \"Rohan\"))......") for(p in myMap.plus(Pair(5, "Rohan"))){ println("Element at key ${p.key} = ${p.value}") } }
输出:
Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk ......myMap.plus(Pair(5, "Rohan"))...... Element at key 1 = Ajay Element at key 4 = Vijay Element at key 3 = Learnfk Element at key 5 = Rohan
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)