kotlin list常用操作符

  1. 下标操作类
  • contains —— 判断是否有指定元素
  • elementAt —— 返回对应的元素,越界会抛IndexOutOfBoundsException
  • firstOrNull —— 返回符合条件的第一个元素,没有 返回null
  • lastOrNull —— 返回符合条件的最后一个元素,没有 返回null
  • indexOf —— 返回指定元素的下标,没有 返回-1
  • singleOrNull —— 返回符合条件的单个元素,如有没有符合或超过一个,返回null
val list1 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list1.contains(2)}") // true
    
Log.i(TAG, "${list1.elementAt(2)}") // 3
    
Log.i(TAG, "${list1.firstOrNull { it % 2 == 0 }}") // 2
    
Log.i(TAG, "${list1.lastOrNull { it % 2 == 0 }}") // 6
    
Log.i(TAG, "${list1.indexOf(1)}") // 0
    
Log.i(TAG, "${list1.singleOrNull { it % 2 == 0 }}" ) // null
  1. 判断类
  • any —— 判断集合中,是否有满足条件的元素
  • all —— 判断集合中的元素 是否都满足条件
  • none —— 判断集合中是否都不满足条件,是则返回true
  • count —— 查询集合中满足条件的元素个数
  • reduce —— 从第一项到最后一项进行累计
val list2 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list2.any { it % 2 == 0 }}") // true
    
Log.i(TAG, "${list2.all { it % 2 == 0 }}") // false
    
Log.i(TAG, "${list2.none { it % 2 == 0 }}") // false
    
Log.i(TAG, "${list2.count { it % 2 == 0 }}") //3
    
Log.i(TAG, "${list2.reduce { total, next -> total + next }}")// 21

3. 过滤类

  • take —— 返回前n个元素
  • filter —— 过滤所有满足条件的元素
  • filterNot —— 过滤所有不满足条件的元素
  • filterNotNull —— 过滤所有非null元素
val list3 = listOf(1, 2, 3, 4, 5, 6)
    
Log.i(TAG, "返回前n个元素 => ${list3.take(2)}") // [1, 2]
    
Log.i(TAG, "过滤所有满足条件的元素 => ${list3.filter { it % 2 == 0 }}") // [2, 4, 6]
    
Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNot { it % 2 == 0 }}") // [1, 3, 5]
    
Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNotNull()}") // [1, 2, 3, 4, 5, 6]
  1. 转换类
    map —— 转换成另一个集合;
    mapIndexed —— 除了转换成另一个集合,还可以拿到Index(下标);
    mapNotNull —— 执行转换前过滤掉为NULL的元素
    flatMap —— 自定义逻辑合并两个集合;
    groupBy —— 按照某个条件分组,返回Map;
val list4 = listOf(1, 2, 3, 4, 5, 6)
Log.i(TAG, "${list4.map { it * 2 }}") //[2, 4, 6, 8, 10, 12]
    
Log.i(TAG, "${list4.mapIndexed { index, it -> index * it }}") //[0, 2, 6, 12, 20, 30]
    
Log.i(TAG, "${list4.mapNotNull { it * 2 }}") //[2, 4, 6, 8, 10, 12]
    
Log.i(TAG, "${list4.flatMap { listOf(it, it + 1) }}") //[1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7]
    
Log.i(TAG, "${list4.groupBy { if (it % 2 == 0) "even" else "odd" }}") //{odd=[1, 3, 5], even=[2, 4, 6]}

5. 排序类

  • reversed —— 反序
  • sorted —— 升序
  • sortedBy —— 自定义排序
  • sortedDescending —— 降序

val list5 = listOf(6, 2, 4, 3, 5, 1)
Log.i(TAG, “反序 => ${list5.reversed()}”) //[1, 5, 3, 4, 2, 6]

Log.i(TAG, “升序 => ${list5.sorted()}”) //[1, 2, 3, 4, 5, 6]

Log.i(TAG, “自定义排序 => ${list5.sortedBy { it % 2 }}”) //[6, 2, 4, 3, 5, 1]

Log.i(TAG, “降序 => ${list5.sortedDescending()}”) //[6, 5, 4, 3, 2, 1]

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/20335,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?