Kotlin的集合是什么样的?一文就懂

本文介绍了Kotlin中集合的基本概念,包括List、Set和Map的特性。讨论了可变与不可变集合的区别,并展示了如何对集合进行排序,如数字列表的升序和降序排序,以及基于多个条件排序的数据类列表。此外,还探讨了Set的添加、删除和合并操作,以及Map的键值对操作。

前言

Kotlin 标准库提供了一整套用于管理集合的工具,集合是可变数量(可能为零)的一组条目,各种集合对于解决问题都具有重要意义,并且经常用到。

  • List 是一个有序集合,可通过索引访问元素。元素可以在 list 中出现多次。List 列表的顺序很重要并且元素可以重复。

  • Set唯一元素的集合。一般来说 set 中元素的顺序并不重要。

  • Map 是一组键值对。键是唯一的,每个键都刚好映射到一个值,值可以重复。

集合的可变性与不可变性

在 Kotlin 中存在两种意义上的集合,一种是可以修改的一种是不可修改的。

不可变集合

val stringList = listOf("one", "two", "one")
println(stringList)
val stringSet = setOf("one", "two", "three")
println(stringSet)

可变集合

val numbers = mutableListOf(1, 2, 3, 4)
numbers.add(5)
numbers.removeAt(1)
numbers[0] = 0
println(numbers)

不难发现,每个不可变集合都有对应的可变集合,也就是以 mutable 为前缀的集合。

集合排序

在 Kotlin 中提供了强大对的集合排序的 API,让我们一起来学习一下:

val numbers = mutableListOf(1, 2, 3, 4)
//随机排列元素
numbers.shuffle()
println(numbers)
numbers.sort()//排序,从小到大
numbers.sortDescending()//从大到小
println(numbers)
//定义一个Person类,有name 和 age 两属性
data class Language(var name: String, var score: Int)
val languageList: MutableList<Language> = mutableListOf()
languageList.add(Language("Java", 80))
languageList.add(Language("Kotlin", 90))
languageList.add(Language("Dart", 99))
languageList.add(Language("C", 80))
//使用sortBy进行排序,适合单条件排序
languageList.sortBy { it.score }
println(languageList)
//使用sortWith进行排序,适合多条件排序
languageList.sortWith(compareBy(
//it变量是lambda中的隐式参数
{ it.score }, { it.name })
)
println(languageList)

集合中的 Set 与 Map

/**set**/
val hello = mutableSetOf("H", "e", "l", "l", "o")//自动过滤重复元素
hello.remove("o")
//集合的加减操作
hello += setOf("w", "o", "r", "l", "d")
println(hello)
/**Map<K, V> 不是 Collection 接口的继承者;但是它也是 Kotlin 的一种集合类型**/
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 1)
println("All keys: ${numbersMap.keys}")
println("All values: ${numbersMap.values}")
if ("key2" in numbersMap) println("Value by key \"key2\": ${numbersMap["key2"]}")
if (1 in numbersMap.values) println("1 is in the map")
if (numbersMap.containsValue(1)) println(" 1 is in the map")

文末

想要学习Kotlin,多一个大厂面试机会的朋友们,这里有一份《高级Kotlin强化实战》,能更快更好的帮助你从入门到精通Kotlin!点击下方名片免费领取

第一章 Kotlin入门教程

  • Kotlin 概述
  • Kotlin 与 Java 比较
  • 巧用 Android Studio
  • 认识 Kotlin 基本类型
  • 走进 Kotlin 的数组
  • 走进 Kotlin 的集合
  • 集合问题
  • 完整代码
  • 基础语法

在这里插入图片描述

第二章 Kotlin 实战避坑指南

  • 方法入参是常量,不可修改
  • 不要 Companion 、INSTANCE ?
  • Java 重载,在 Kotlin 中怎么巧妙过渡一下?
  • Kotlin 中的判空姿势
  • Kotlin 复写 Java 父类中的方法
  • Kotlin “狠”起来,连TODO 都不放过!
  • is、as` 中的坑
  • Kotlin 中的 Property 的理解
  • also 关键字
  • takeIf 关键字
  • takeIf 关键字
  • 单例模式的写法

在这里插入图片描述

##第三章 项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始

  • Kotlin 写 Gradle 脚本是一种什么体验?

  • Kotlin 编程的三重境界

  • Kotlin 高阶函数

  • Kotlin 泛型

  • Kotlin 扩展

  • Kotlin 委托

  • 协程“不为人知”的调试技巧

  • 图解协程:suspend

在这里插入图片描述
欢迎大家一键三连支持,若需要文中资料,直接点击文末优快云官方认证微信卡片免费领取↓↓↓

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值