设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间20 现在时间20 缓存数据 和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

查看: 251|回复: 1

Kotlin 集合函数map 和 first 的使用场景分析

[复制链接]

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:16
  • 最近打卡:2025-09-14 21:37:34
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
33
主题
25
精华
0
金钱
110
积分
60
注册时间
2023-10-4
最后登录
2025-9-14

发表于 2025-8-22 18:53:23 | 显示全部楼层 |阅读模式
Kotlin 提供了丰富的集合操作函数,使开发者可以更加简洁、高效地处理数据。其中,
  1. map
复制代码
  1. first
复制代码
是两个常用的函数,分别用于转换集合和获取集合中的第一个元素。

1. map 的使用场景


场景 1:对象列表转换

在开发中,我们经常需要对列表中的对象进行转换,比如获取某个字段的值。
  1. data class User(val id: Int, val name: String)
  2. val users = listOf(
  3.     User(1, "Alice"),
  4.     User(2, "Bob"),
  5.     User(3, "Charlie")
  6. )
  7. val names = users.map { it.name }
  8. println(names) // 输出: [Alice, Bob, Charlie]
复制代码
场景 2:数据格式转换

例如,我们有一个整数列表,需要将其转换为字符串列表。
  1. val numbers = listOf(1, 2, 3, 4, 5)
  2. val stringNumbers = numbers.map { "Number: $it" }
  3. println(stringNumbers) // 输出: [Number: 1, Number: 2, Number: 3, Number: 4, Number: 5]
复制代码
2. first 的使用场景


场景 1:获取符合条件的第一个元素

当我们希望获取列表中符合某个条件的第一个元素时,可以使用
  1. first
复制代码
  1. val numbers = listOf(10, 20, 30, 40, 50)
  2. val firstEven = numbers.first { it % 2 == 0 }
  3. println(firstEven) // 输出: 10
复制代码
如果列表为空或者找不到符合条件的元素,
  1. first
复制代码
会抛出异常。因此,可以使用
  1. firstOrNull
复制代码
避免异常。
  1. val emptyList = listOf<Int>()
  2. val firstOrNull = emptyList.firstOrNull()
  3. println(firstOrNull) // 输出: null
复制代码
3. 其他常用集合函数

除了
  1. map
复制代码
  1. first
复制代码
,Kotlin 还提供了许多强大的集合操作函数。

3.1 filter 过滤集合
  1. filter
复制代码
用于筛选符合条件的元素。
  1. val numbers = listOf(1, 2, 3, 4, 5)
  2. val evenNumbers = numbers.filter { it % 2 == 0 }
  3. println(evenNumbers) // 输出: [2, 4]
复制代码
3.2 reduce 累积计算
  1. reduce
复制代码
用于聚合集合中的数据。
  1. val numbers = listOf(1, 2, 3, 4, 5)
  2. val sum = numbers.reduce { acc, num -> acc + num }
  3. println(sum) // 输出: 15
复制代码
3.3 fold 带初始值的累积计算
  1. fold
复制代码
  1. reduce
复制代码
类似,但
  1. fold
复制代码
允许设置初始值。
  1. val numbers = listOf(1, 2, 3, 4, 5)
  2. val sumWithInitial = numbers.fold(10) { acc, num -> acc + num }
  3. println(sumWithInitial) // 输出: 25
复制代码
3.4 sortedBy 排序
  1. sortedBy
复制代码
可以对集合按照某个字段进行排序。
  1. data class User(val name: String, val age: Int)
  2. val users = listOf(
  3.     User("Alice", 30),
  4.     User("Bob", 25),
  5.     User("Charlie", 28)
  6. )
  7. val sortedUsers = users.sortedBy { it.age }
  8. println(sortedUsers) // 输出: [User(name=Bob, age=25), User(name=Charlie, age=28), User(name=Alice, age=30)]
复制代码
3.5 joinToString 分割连接
  1. joinToString()
复制代码
是 Kotlin 集合(如
  1. List
复制代码
)上的一个扩展函数,用于将集合中的元素连接成一个字符串,并可以自定义分隔符、前后缀等。
基本用法
  1. val list = listOf("A", "B", "C")
  2. val result = list.joinToString(", ")  // 用 ", " 连接元素
  3. println(result)  
  4. // 输出: A, B, C
复制代码
常见用法

3.5.1 自定义分隔符
  1. val numbers = listOf(1, 2, 3, 4)
  2. println(numbers.joinToString(" - "))  
  3. // 输出: 1 - 2 - 3 - 4
复制代码
3.5.2 添加前缀和后缀
  1. val words = listOf("Kotlin", "Java", "Python")
  2. println(words.joinToString(", ", prefix = "[", postfix = "]"))
  3. // 输出: [Kotlin, Java, Python]
复制代码
3.5.3 限制输出个数并添加省略号
  1. val letters = listOf("A", "B", "C", "D", "E")
  2. println(letters.joinToString(", ", limit = 3, truncated = "..."))
  3. // 输出: A, B, C, ...
复制代码
3.5.4 自定义转换格式
  1. data class Person(val name: String, val age: Int)
  2. val people = listOf(Person("Alice", 25), Person("Bob", 30))
  3. println(people.joinToString { "${it.name} (${it.age})" })
  4. // 输出: Alice (25), Bob (30)
复制代码
4. 结论

Kotlin 提供了许多强大的集合操作函数,其中
  1. map
复制代码
适用于转换集合,
  1. first
复制代码
适用于获取符合条件的第一个元素。此外,
  1. filter
复制代码
  1. reduce
复制代码
  1. fold
复制代码
  1. sortedBy
复制代码
等函数可以帮助我们更高效地操作集合。在日常开发中,合理使用这些函数可以大大提高代码的可读性和简洁性。
到此这篇关于Kotlin 集合函数:map 和 first 的使用场景的文章就介绍到这了,更多相关Kotlin map 和 first 使用内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
4
精华
0
金钱
34
积分
24
注册时间
2022-12-20
最后登录
2023-5-17

发表于 2025-11-16 11:05:53 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表