kotlin集合操作⑤(map集合|获取map值|map遍历|可变map集合)(代码片段)

韩曙亮 韩曙亮     2023-01-22     523

关键词:

文章目录





一、Map 集合



调用 mapOf 函数 创建 Map 集合 , 键值对 元素有两种初始化方式 :

  • 使用 to 函数进行初始化 : 在参数中使用 键 to 值 的方式进行初始化 ;
  • 使用 Pair 对象进行初始化 : 传入 Pair(键, 值) 进行初始化 ;

to 函数原型如下 , 其本质也是返回 Pair 类型的实例对象 ;

/**
 * 从this和[that]创建类型为[Pair]的元组。
 * 这对于创建噪音更少的[Map]字面量很有用,例如:
 * @sample samples.collections.Maps.Instantiation.mapFromPairs
 */
public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

代码示例 :

fun main() 
    val map = mapOf("Tom" to 18, "Jerry" to 12, "Jack" to 20)
    println(map)

    val map2 = mapOf(Pair("Tom", 18), Pair("Jerry", 12), Pair("Jack", 20))
    println(map2)

执行结果 :

Tom=18, Jerry=12, Jack=20
Tom=18, Jerry=12, Jack=20




二、获取 Map 值



获取 Map 值 :

  • 使用 取值运算符 [] 获取 Map 集合中的值 , 运算符中传入 键 , 如果找不到 键 对应的 值 , 返回 null ;
  • 使用 Map#getValue 函数 , 获取 键 对应的 值 , 如果没有找到则抛出异常 ;
	public fun <K, V> Map<K, V>.getValue(key: K): V = getOrImplicitDefault(key)
  • 使用 Map#getOrElse 函数 , 获取 键 对应的 值 , 如果没有找到则返回 Lambda 表达式 参数 的返回值 ;
	public inline fun <K, V> Map<K, V>.getOrElse(
		key: K, 
		defaultValue: () -> V): V = get(key) ?: defaultValue()
  • 使用 Map#getOrDefault 函数 , 获取 键 对应的 值 , 如果没有找到则返回默认值 ;
    public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V 
        // See default implementation in JDK sources
        throw NotImplementedError()
    

代码示例 :

fun main() 
    val map = mapOf("Tom" to 18, "Jerry" to 12, "Jack" to 20)
    println(map)

    val map2 = mapOf(Pair("Tom", 18), Pair("Jerry", 12), Pair("Jack", 20))
    println(map2)

    // 使用 取值运算符 `[]`  获取 Map 集合中的值 , 运算符中传入 键 , 如果找不到 键 对应的 值 , 返回 null
    println(map["Tom"])

    // 使用 Map#getValue 函数 , 获取 键 对应的 值 , 如果没有找到则抛出异常
    println(map.getValue("Tom"))

    // 使用 Map#getOrElse 函数 ,  获取 键 对应的 值 , 如果没有找到则返回 Lambda 表达式 参数 的返回值
    println(map.getOrElse("Tim", 20))

    // 使用 Map#getOrDefault 函数 , 获取 键 对应的 值 , 如果没有找到则返回默认值
    println(map.getOrDefault("Tim", 88))

执行结果 :

Tom=18, Jerry=12, Jack=20
Tom=18, Jerry=12, Jack=20
18
18
20
88




三、Map 遍历



Map 遍历方式 :

  • forEach 函数 , 传入 Lambda 表达式参数 , 该 Lambda 表达式的参数为 Map.Entry<K, V> 类型 ;
public inline fun <K, V> Map<out K, V>.forEach(action: (Map.Entry<K, V>) -> Unit): Unit 
    for (element in this) action(element)

  • forEach 函数 , 传入 Lambda 表达式参数 , 该 Lambda 表达式的 两个参数为 实际的 键值对 的类型 ;
    default void forEach(BiConsumer<? super K, ? super V> action) 
        Objects.requireNonNull(action);
        for (Map.Entry<K, V> entry : entrySet()) 
            K k;
            V v;
            try 
                k = entry.getKey();
                v = entry.getValue();
             catch(IllegalStateException ise) 
                // this usually means the entry is no longer in the map.
                throw new ConcurrentModificationException(ise);
            
            action.accept(k, v);
        
    

代码示例 :

fun main() 
    val map = mapOf("Tom" to 18, "Jerry" to 12, "Jack" to 20)
    println(map)

    map.forEach 
        // 可操作 Entry 对象
        println("$it.key = $it.value")
    

    map.forEach  key: String, value: Int ->
        // 可获取具体的键和值
        println("$key = $value")
    

执行结果 :

Tom=18, Jerry=12, Jack=20
Tom = 18
Jerry = 12
Jack = 20
Tom = 18
Jerry = 12
Jack = 20




四、可变 Map 集合



通过调用 mutableMapOf 函数 , 可创建 可变 Map 集合 ;

代码示例 :

fun main() 
    val mutableMap = mutableMapOf("Tom" to 18, "Jerry" to 12, "Jack" to 20)
    println(mutableMap)

    // 增加元素
    mutableMap += "Rose" to 18
    mutableMap.put("Tim", 21)
    println(mutableMap)

    // 查询是否有 某个键 对应的值, 如果没有则添加一个默认值进去
    mutableMap.getOrPut("Kate", 19 )
    println(mutableMap)

执行结果 :

Tom=18, Jerry=12, Jack=20
Tom=18, Jerry=12, Jack=20, Rose=18, Tim=21
Tom=18, Jerry=12, Jack=20, Rose=18, Tim=21, Kate=19

kotlin集合操作总结(list集合|mutablelist集合|list集合遍历|set集合|mutableset集合|map集合|可变map集合)(代码片段)

...十四、Map遍历十五、可变Map集合一、List创建与元素获取Kotlin中的集合分为两类,只读集合和可变集合;调用listOf函数,可以直接创建List集合;通过[]下标可以直接获取List集合中的元素;funmain()vallist=listOf("Tom","Jerry")println... 查看详情

kotlin集合操作总结(list集合|mutablelist集合|list集合遍历|set集合|mutableset集合|map集合|可变map集合)(代码片段)

文章目录一、List创建与元素获取二、安全获取集合元素1、getOrElse函数2、getOrNull函数三、List创建与元素获取代码示例四、MutableList可变列表集合五、修改MutableList集合的mutator函数1、添加元素运算符+=和删除元素运算符-=2... 查看详情

kotlin常用collection集合操作整理

参考技术A本篇记录了Kotlin常用集合的相关操作,用以熟练使用Kotlin里的相关集合。集合接口与相关函数位于kotlin.collections包中。Kotlin标准库提供了基本集合类型的实现:Set、List以及Map。一对接口代表每种集合类型:其中灰色是... 查看详情

map集合中,关于取值和遍历的相关操作(代码片段)

这是自己的关于map集合的相关操作的小研究,分享给大家。主要代码内容包含以下:1,map集合的遍历2,根据key值获取value值3,根据value值获取key值4,返回最大value值对应的key值5,获取最大key值,最小key值,最大value值,最小value... 查看详情

java枚举操作(获取值,转map集合)

JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中可能用到,希望对... 查看详情

每天学一点kotlin--集合:mutablemap

参考技术A----《第一季Kotlin崛起:次世代Android开发》学习笔记总目录:每天学一点Kotlin----目录上一篇:每天学一点Kotlin--集合:Map下一篇:每天学一点Kotlin--集合类型共性1.1根据集合类型的整体特性,Kotlin中分为3种集合:(1)有序... 查看详情

groovymap集合(map集合操作符重载|*.展开操作符|代码示例)(代码片段)

...以使用双引号""defmap=[J:"Java","K":"Kotlin",'G':"Groovy"]//"+"操作符重载defmap 查看详情

kotlin初学者集合(代码片段)

...介:CSDN博客专家、华为云享专家认证系列专栏:Kotlin初学者学习交流:三人行必有我师焉;择其善者而从之,其不善者而改之。目录一、集合二、List集合2.1创建只读List2.2创建可变List2.3List和MutableList相互转换2... 查看详情

groovymap集合(map集合定义|通过getclass函数获取map集合的类型|代码示例)(代码片段)

...以使用双引号""defmap=[J:"Java","K":"Kotlin",'G':"Groovy"]上述创建的map集合是java.util.LinkedHashMap类型的集合;二、获取map集合类型之前的博客【Groovy】集合声明与访问(使用[]创建ArrayList和LinkedList集合|... 查看详情

map集合

第一章 Map集合1.1概述:1).特点:1).Map内部采用“键值对”的形式存储;2).在一个Map内,“键”是唯一的;值可以重复;每个键只能对应一个值。3).键和值可以是任何对象;4).可以通过“键”获取对应的“值”;1.2常用子类:... 查看详情

groovymap集合(根据key获取map集合中对应的值|map.key方式|map.‘key’方式|map[‘key’]方式|代码示例)(代码片段)

...以使用双引号""defmap=[J:"Java","K":"Kotlin",'G':"Groovy"]其类型是java.util.LinkedHashMap,下面开始根据Key获取map集合中的值,有333种获取方法:方式111:通过map.Key方式获取map集合中的值Value;方式222:通过map.... 查看详情

kotlin——集合

参考技术AKotlin的集合类由两个接口派生:Collection和Map。Collection和Map是Java集合框架的根接口,这两个接口又包含一些子接口或实现类Java中的集合都是可变集合,但Kotlin的集合被分为两大类:可变集合和不可变集合。Kotlin也提供... 查看详情

细说kotlin工具函数及使用准则-转换函数map()过滤函数filter()聚合函数(代码片段)

过滤过滤是最常用的集合处理任务之一。在Kotlin中,过滤条件由 谓词 定义——接受一个集合元素并且返回布尔值的lambda表达式:true 说明给定元素与谓词匹配,false 则表示不匹配。标准库包含了一组让你能够通过... 查看详情

react处理object中的map集合

...act是比较容易获取的,但是前段时间开发过程中遇到过map集合的数据,数据格式如下:当然这是简化后的数据。对于这种对象的获取其实直接通过list.actions.create和list.actions.delete是可以获取到的,但是我们从后台获取到数据后并... 查看详情

map

一.Map的概述   1.什么是Map集合     Collection称为单列集合,元素的孤立存在的     Map称为双列集合     注意:Collection是单集合的根接口        Map是双列集合的根接口   2.Map集合的特点     a... 查看详情

map集合知识点汇总

Map集合知识点总结一、Map集合的特点Map集合中的元素总是成对存在的,由键和值两部分组成Map集合中的元素值可以重复,键不能重复。每个键只能对应一个值二、Map接口中常用的集合HashMap<K,V>:存储数据用到的是哈希表结构... 查看详情

map集合

目录 Map集合的特性Map的实现类Map集合的常用操作Map集合t使用的一个例子 Map集合的特性 Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中... 查看详情

java中map集合的三种遍历方式(代码片段)

文章目录Map集合的遍历方式Map集合的遍历方式一:键找值Map集合的遍历方式二:键值对Map集合的遍历方式三:LambdaMap集合的遍历方式Map集合的遍历方式有3种:方式一:键找值的方式遍历:先获取Map集合全部的键,再根据遍... 查看详情