kotlin实战kotlin中集合的创建(代码片段)

先知丨先觉 先知丨先觉     2022-11-28     459

关键词:

kotlin中的集合

Kotlin中的集合分为两派:可变集合不可变集合

  • 列表:List/MutableList;
  • 集:Set/MutableSet;
  • 映射:Map/MutableMap;
  • 集:Collection/MutableCollection;
  • 迭代器:Iterable/MutableIterable;

所谓可变就是支持读、写、删,不可变只支持读

我们从下面详细对比中可以发现:

public interface Collection<out E> : Iterable<E>...

public interface MutableCollection<E> : Collection<E>, MutableIterable<E>...

public interface List<out E> : Collection<E> ...

public interface MutableList<E> : List<E>, MutableCollection<E> ...

public interface Set<out E> : Collection<E> ...

public interface MutableSet<E> : Set<E>, MutableCollection<E>...

public interface Map<K, out V>...

public interface MutableMap<K, V> : Map<K, V> ...

如何创建集合

List

val emptyList = emptyList<String>() //创建空的List
val list = listOf<String>("132", "321", "liming") //创建普通的List
val mutList = mutableListOf<Int>(652, 123, 4564) //创建可修改的List

set

val emptySet = emptySet<String>() //创建空的Set
val set = setOf<String>("123", "3212", "sadsa") //创建一个普通的Set
val mutSet = mutableSetOf<Int>(123, 21, 852) //创建一个可变的Set
val hashSet = hashSetOf<Int>(123, 21, 852) //创建一个可变HashSet
val linkedSet = linkedSetOf<Int>(123, 21, 852) //创建一个LinkedHashSet
val sortedSet = sortedSetOf<Int>(123, 21, 852) //创建一个SortedSet

map

val emptyMap = emptyMap<Int, String>() //创建一个空的<Integer,String>的Map
val map = mapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个普通的map
val mutMap = mutableMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个可变的map
val hashMap = hashMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个hashMap
val linkedMap = linkedMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个linkedMap
val sortedMap = sortedMapOf<Int, String>(1 to "haha", 2 to "lala") //创建一个sortedMap

to并不是一个特殊的结果,而是一个普通的函数

kotlin中的集合与Java中集合的关系

接下来让我们看一下创建的对象类型:

println(list.javaClass) //class java.util.Arrays$ArrayList
println(set.javaClass) //class java.util.LinkedHashSet
println(map.javaClass) //class java.util.LinkedHashMap

如你所见,Kotlin并没有采用自己的集合类,而是采用标准的java集合类,这对java开发者来说是个好消息。

为什么Kotlin没有自己专门的集合类呢?

答: 因为使用标准的java集合类可以更好的和java交互。kotlin与java互调不用考虑集合类的转换。

尽管如此Kotlin并没有止步,而是在此基础上增加了很多方法,如:
获取列表中的最后一个元素,或者得到一个数字列表的最大值:

val strings = listOf<String>("first","second","third","last")
println(strings.last()) //输出 last

val numbers = setOf(1,11,-10,25,3,2)
println(numbers.max())  //输出 25
println(numbers.min())  //输出 -10

更多骚操作请关注后续文章。

kotlin实战kotlin中集合的创建(代码片段)

kotlin中的集合Kotlin中的集合分为两派:可变集合与不可变集合列表:List/MutableList;集:Set/MutableSet;映射:Map/MutableMap;集:Collection/MutableCollection;迭代器:Iterable/MutableIterable;所谓可... 查看详情

kotlin入门到精通(实战)数组的创建和操作详解(代码片段)

<<<返回专栏总目录本章目录数组的创建方式方式1方式2方式3方式4创建多维数组数组的操作map操作flatMap操作fold操作associate操作associateBy操作distinct操作distinctBy操作数组的创建方式方式1通过Array类来创建数组。Array类的声明... 查看详情

kotlin实战——kotlin基础(代码片段)

文章目录1.基本要素:函数和变量1.1函数1.2变量1.3更简单的字符串格式化:字符串模板2.类和属性2.1属性2.2自定义访问器3.表示和处理选择:枚举和“when”3.1声明枚举类3.2使用“when”处理枚举类3.3在“when”结构中使用... 查看详情

kotlin实战之委托总结(代码片段)

...是觉得将自己的云笔记分享出来吧~特别说明,kotlin系列文章均以Java差异为核心进行提炼,与Java相同部分不再列出。随着kotlin官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓... 查看详情

kotlin入门到精通(实战)-空安全和实战技巧(代码片段)

...转非空断言2、实战中的编程小技巧技巧1技巧21、空安全Kotlin中包含可空类型(Nullabletypes)和不可空类型(Non-NullTypes),任何复杂类型都包括可空类型和不可空类型,例如下面的String类型:funmain()varname 查看详情

kotlin入门到精通(实战)-空安全和实战技巧(代码片段)

...转非空断言2、实战中的编程小技巧技巧1技巧21、空安全Kotlin中包含可空类型(Nullabletypes)和不可空类型(Non-NullTypes),任何复杂类型都包括可空类型和不可空类型,例如下面的String类型:funmain()varname 查看详情

kotlin入门到精通(实战)-流程控制透彻解析returnbreakcontinue(代码片段)

...eturninanonymousfunction案例5:配合?:使用2、break3、continue由于Kotlin有Lambda,匿名函数等概念,使得在Kotlin中return和jump相对于C语言稍微复杂点,本篇文章就给大奖讲清楚Kotlin中 查看详情

kotlin协程入门指南+进阶实战,kotlin语言真的太香了(代码片段)

2017年,Google在的I/O大会上宣布Kotlin正式成为Android的一级开发语言。这门新语言学习成本低、还可以和Java互相调用、非常人性化,自发布伊始其使用人数就呈爆发式的增长。直至今日,已有**35%**的Android专业开发人员... 查看详情

kotlin入门到精通(实战)-流程控制透彻解析returnbreakcontinue(代码片段)

...eturninanonymousfunction案例5:配合?:使用2、break3、continue由于Kotlin有Lambda,匿名函数等概念,使得在Kotlin中return和jump相对于C语言稍微复杂点,本篇文章就给大奖讲清楚Kotlin中的return和jump的各种情况的用法。常见的return和jump,主要... 查看详情

开源分享:谷歌大佬联合打造《高级kotlin强化实战(附demo)》(代码片段)

Kotlin以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用Kotlin的专业Android开发者中,有多达67%的人表示Kotlin已经帮助他们提升了生产力。在接下来的内容中,我会分享一... 查看详情

kotlin实战之letwithrunapplyalsotakeiftakeunlessrepeat源码总结(代码片段)

...是觉得将自己的云笔记分享出来吧~特别说明,kotlin系列文章均以Java差异为核心进行提炼,与Java相同部分不再列出。随着kotlin官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓... 查看详情

kotlin实战之面向对象特性全方位总结(代码片段)

...是觉得将自己的云笔记分享出来吧~特别说明,kotlin系列文章均以Java差异为核心进行提炼,与Java相同部分不再列出。随着kotlin官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓... 查看详情

谷歌开源史上最详《kotlin入门进阶实战》,学不动也要学(代码片段)

Kotlin作为Android开发的首选语言,为开发者提供了大量的语法糖和技巧,让开发者可以专注于需求开发,而将语言所带来的影响减少到最少。Java和Kotlin最大的区别,实际上在于Kotlin的函数式编程思想以及语法,... 查看详情

kotlin实战之函数与lambda表达式总结(代码片段)

...是觉得将自己的云笔记分享出来吧~特别说明,kotlin系列文章均以Java差异为核心进行提炼,与Java相同部分不再列出。随着kotlin官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓... 查看详情

字节+谷歌超全kotlin学习王炸笔记,kotlin入门教程+高级kotlin强化实战(附demo)(代码片段)

我们为什么要尝试Kotlin?Google发布申明,目前已经有35%的Android专业开发人员使用kotlin(爆发式增长)Google与Oracle源于Android的恩怨持续已久,也一直想要找一种语言代替JavaJava以后要开始收费了,可能导致一部分... 查看详情

kotlin实战之泛型与逆变协变总结(代码片段)

...是觉得将自己的云笔记分享出来吧~特别说明,kotlin系列文章均以Java差异为核心进行提炼,与Java相同部分不再列出。随着kotlin官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓... 查看详情

kotlin|kotlin反射(代码片段)

文章目录1.Kotlin反射1.1Kotlin反射类图2.创建实例无参构造有参构造说明例子3.通过反射调用方法KFunction4.通过反射获取属性5.获取实例的companion6.获取注解7.获取内部类8.完整的代码1.Kotlin反射Kotlin的反射需要集成org.jetbrains.kotlin:kotlin... 查看详情

javascript如何删除mongodb中集合的所有文档?(代码片段)

查看详情