前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin实战【六】Kotlin中集合的创建

Kotlin实战【六】Kotlin中集合的创建

作者头像
先知先觉
发布2020-01-13 16:19:33
1.1K0
发布2020-01-13 16:19:33
举报
文章被收录于专栏:伟大程序猿的诞生

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

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

set

代码语言:javascript
复制
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

代码语言:javascript
复制
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中集合的关系

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

代码语言:javascript
复制
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并没有止步,而是在此基础上增加了很多方法,如: 获取列表中的最后一个元素,或者得到一个数字列表的最大值:

代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kotlin中的集合
  • 如何创建集合
    • List
      • set
        • map
        • kotlin中的集合与Java中集合的关系
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档