Kotlin实战【六】Kotlin中集合的创建
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()) //输出 lastval numbers = setOf(1,11,-10,25,3,2)
println(numbers.max()) //输出 25
println(numbers.min()) //输出 -10
更多骚操作请关注后续文章。
Kotlin实战【六】Kotlin中集合的创建相关推荐
- Kotlin实战指南一:集合
转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87781732 本文出自[赵彦军的博客] Kotlin初体验一:集合 集合 一.l ...
- python中集合的使用
python中集合的使用 在python中对集合的操作主要包括:集合的创建.集合中数据的添加.集合中数据的删除.集合中数据的查找. 1.集合的创建 在python中集合的创建方法有直接创建和使用关键字 ...
- Kotlin 设计模式及实战 (持续更新中......)
Kotlin 设计模式及实战 "每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动". Christo ...
- 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...
- Kotlin实战指南二十:flow
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117370700 本文出自[赵彦军的博客] 文章目录 往期精彩文章 flow 是啥 ...
- Kotlin实战指南十九:use 函数魔法
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117366756 本文出自[赵彦军的博客] 文章目录 往期精彩文章 use函数 往期 ...
- Kotlin实战指南十八:open、internal 关键字使用
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117365712 本文出自[赵彦军的博客] 文章目录 往期精彩文章 open关键字 ...
- Kotlin实战案例:实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表)
n实战案例:带你实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表和网格效果) 随着Kotlin的推广,一些国内公司的安卓项目开发,已经从Java完全切成Kotlin了.虽然Ko ...
- Kotlin实战(三)
一.元组 1.1.二元元组 data class Pair<out A, out B>(public val first: A,public val second: B ) : Seria ...
- Kotlin实战指南十七:JvmField、JvmStatic使用
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/116668666 本文出自[赵彦军的博客] 文章目录 往期精彩文章 @JvmFiel ...
最新文章
- centos安装JDK与Tomcat
- 线上使用zabbix报警脚本(含图片)
- 给定入栈序列,判断一个串是否为出栈序列
- Laravel 查询某天数据 whereDate
- 【数据挖掘实例】构建Xgboost模型,在电力用户的95598工单数据中的电费敏感用户预测(高敏用户模型)
- Spark Streaming从Kafka中拉取数据,并且使用过“窗口函数”统计一些流量信息
- 如何知道远程电脑某一端口是否打开?
- 远程桌面退出全屏/不能全屏/全屏切换的技巧
- ocx可以被Java调用么_java调用ocx
- Angular core.js executeTemplate
- ubuntu11.04下配置中文输入法
- java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)
- 关于getResource(/)的读取路径问题
- Python3安装cx_Oracle连接oracle数据库实操总结
- 【C++】:动态库与静态库区别
- 计算机键盘中英文,苹果电脑键盘上的【⌘】键用英文怎么表达?和露营地又有什么关系...
- VBV大小-H.264
- CF855G. Harry Vs Voldemort(边双,并查集,dp)
- Linux中的su 和su -
- python分词考研英语真题词频(附结果)——读取word、nltk、有道智云API
热门文章
- EChart:EChart与NProgress结合异步加载数据
- PS使用:利用PS制作旋转水晶球gif图
- Python:程序生成Windows可执行文件/不显示命令执行窗口/无法生成exe报错TypeError: an integer is required (got type bytes)解决方法
- python语言基础实验一_实验1 Python语言基础
- 行业动态_天才、忽悠与炮灰
- status函数(自学数据结构第一天)
- 女神节福利来了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)
- 疫情严峻!有高校不放寒假,直接开始新学期!还有高校紧急放假,停止考试直接回家...
- LeetCode之反转字符串中的单词
- 前端js实现打印excel表格