Kotlin Map 接口

2024年8月29日 | 阅读 7 分钟

Kotlin Map 是一个接口,是元素的泛型集合。 Map 接口以键值对的形式保存数据。 Map 键是唯一的,每个键只保存一个值。 键和值可以是不同的对,例如 <Int, Int>,<Int, String>, <Char, String>等。 这个接口是不可变的,大小固定,其方法仅支持只读访问。

要使用 Map 接口,我们需要使用它的函数,称为 mapOf() 或 mapOf<k,v>()。

Map 接口声明

Map 接口的属性

性质描述
abstract val entries: Set<Entry<K, V>>它仅返回当前 map 中 Set 接口的所有键值对。
abstract val keys: Set<K>它仅返回当前 map 中 Set 接口的所有键。
abstract val keys: Set<K>它返回当前 map 中键值对的数量。
abstract val values: Collection<V>它仅返回当前 map 中所有值的 Collection。 此集合可能包含重复值。

Map 接口的函数

Map 接口中提供了几个函数。 下面提到了 Map 接口的一些函数。

函数描述
fun <K, V> Map<key, value>.getValue(key: K): V它返回给定键的值,如果 map 中没有此类键,则抛出异常。
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 中由键给定的值,或者如果 map 中不包含给定键的映射,则返回默认值。
fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>>它创建 Iterable 接口的一个实例,该实例包装原始 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 funMap.minus(key: K): Map它返回一个 map,该 map 包含原始 map 的所有条目,除了提到的键的条目。
operator fun <K, V> Map<out K, V>.minus(
keys: Iterable<K>
): Map<K, V>
它返回一个 map,该 map 包含原始 map 的所有条目,除了那些包含在提及的键集合中的条目键。
operator fun <K, V> Map<out K, V>.minus(
keys: Sequence<K>
): Map<K, V>
它返回一个 map,该 map 包含原始 map 的所有条目,除了那些包含在给定键序列中的条目键。
operator fun <K, V> Map<out K, V>.plus(
pair: Pair<K, V>
): Map<K, V>
它通过从给定的键值对添加或替换当前 map 中的条目来创建一个新的只读 map。
operator fun <K, V> Map<out K, V>.plus(
pairs: Iterable<Pair<K, V>>
): Map<K, V>
它通过从给定的键值对集合添加或替换当前 map 中的条目来创建一个新的只读 map。
operator fun <K, V> Map<out K, V>.plus(
pairs: Sequence<Pair<K, V>>
): Map<K, V>
它通过从给定的键值对序列添加或替换当前 map 中的条目来创建一个新的只读 map。

Kotlin Map 接口示例 1

让我们创建一个使用 mapOf<k,v>() 函数声明和遍历 map 值的示例。 在此示例中,我们创建 Int 类型的键和 String 类型的值。

输出

Ajay
Vijay
Prakash

Kotlin Map 接口示例 2 - 泛型

为了更具体,我们可以提供泛型类型 Map,例如 myMap: Map<k, v> = mapOf<k,v>()。

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash

Kotlin Map 接口示例 3 - 非泛型

如果我们不能指定 Map 接口的键和值的任何类型,那么它可以采用不同类型的键和值。 这是因为所有类都在内部使用 <Any, Any> 类型。 例如

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
Element at key ram = Ram
Element at key two = 2

Kotlin Map 接口示例 4 - mapOf().getValue()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
.....myMap.getValue(4).......
Vijay

Kotlin Map 接口示例 5 - mapOf().contains()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
.....myMap.contains(3).......
true

Kotlin Map 接口示例 6 - mapOf().containsKey()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.containsKey(2)......
false

Kotlin Map 接口示例 7 - mapOf().containsValue ()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.containsValue("Ajay")......
true

Kotlin Map 接口示例 8 - mapOf().get()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
.....myMap.get(1).......
Ajay

Kotlin Map 接口示例 9 - mapOf().getOrDefault ()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.getOrDefault(3, "Vijay")......
Prakash

Kotlin Map 接口示例 10 - mapOf().asIterable ()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
.......myMap.asIterable().....
key = 1 value = Ajay
key = 4 value = Vijay
key = 3 value = Prakash

Kotlin Map 接口示例 11 - mapOf().iterator()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.iterator()......
key = 1 value = Ajay
key = 4 value = Vijay
key = 3 value = Prakash

Kotlin Map 接口示例 12 - mapOf().minus()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.minus(4)......
Ajay
Prakash

Kotlin Map 接口示例 13 - mapOf().plus()

输出

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
......myMap.plus(Pair(5, "Rohan"))......
Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Prakash
Element at key 5 = Rohan