kotlin: zip函数

一,功能

zip 函数 可以将 两个元素个数相同的集合 合并成 一个 新的 Pair 键值对 List 集合 ,
其中 一个集合的元素作为 键 Key , 另外一个集合的元素作为 值 Value ;

被合并 的 两个集合 可以是 不同类型的集合 ;

用途: 用于将两个集合按照索引一一配对,生成一个新的 List<Pair<T, R>> 集合。

作用:将两个集合的元素按位置组合成键值对(Pair)。
返回值:一个新的列表,每个元素是 Pair(first: 第一个集合元素, second: 第二个集合元素)。
注意点:
如果两个集合长度不一致,超出部分会被忽略。
常与 toMap() 搭配使用,快速构建键值对映射。

二,例子

代码:

        //处理按钮点击事件
        binding.button3.setOnClickListener {
            val names = listOf("Tom", "Jerry", "Jack")
            val ages = listOf(16, 17, 18)

            // 合并函数
            val nameAndAges = names.zip(ages)

            // 由于 zip 函数使用了 infix 修饰
            // 因此可以使用如下方式进行调用
            val nameAndAges2 = names zip ages

            println(nameAndAges)
            println(nameAndAges2)
        }

运行结果:

image

三,例子:foreach

代码:


        //处理按钮点击事件
        binding.button2.setOnClickListener {
            val list1 = listOf("a", "b", "c")
            val list2 = listOf(1, 2, 3)

            list1.zip(list2).forEach { (key, value) ->
                println("Key: $key, Value: $value")
            }
        }

运行结果:

image

四,例子:用toMap把结果转为map

代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            val keys = listOf("a", "b", "c")
            val values = listOf(1, 2, 3)
            val map = keys.zip(values).toMap()
            println(map) // 输出: {a=1, b=2, c=3}
        }

运行结果:

image

五,例子:数据校验或对比

代码:

        //处理按钮点击事件
        binding.button4.setOnClickListener {
            val expected = listOf(10, 20, 30)
            val actual = listOf(10, 25, 30)

            expected.zip(actual).forEachIndexed { index, (exp, act) ->
                if (exp != act) println("第 $index 项不匹配: 期望 $exp,实际 $act")
            }
        }

运行结果:

image

posted @ 2025-08-16 08:10  刘宏缔的架构森林  阅读(12)  评论(0)    收藏  举报