Kotlin容器
1. 容器 可变/不可变
List<out T> 只读list; MutableList<T>;
Set<out T>/MutableSet<T>
Map<K, out V>/MutableMap<K, V>
//示例
val numbers: MutableList<Int> = mutableListOf(1, 2, 3)
val readOnlyView: List<Int> = numbers
println(numbers) // prints "[1, 2, 3]"
numbers.add(4)
println(readOnlyView) // prints "[1, 2, 3, 4]"
readOnlyView.clear() // -> does not compile
1.1 MutableList
//示例
val numbers: MutableList<Int> = mutableListOf(1, 2, 3)
val readOnlyView: List<Int> = numbers
println(numbers) // prints "[1, 2, 3]"
numbers.add(4)
println(readOnlyView) // prints "[1, 2, 3, 4]"
readOnlyView.clear() // -> does not compile
//属性
size //尺寸
lastIndex //最尾元素的索引值
//方法
isNotEmpty()
forEach //循环
forEachIndexed //带索引的循环
//取值
component1() //获取第1(2/3/4/5/)个元素
elementAtOrElse //返回指定E,或index越界时返回入参函数的执行结果
getOrElse //取值,如果越界则返回传入的默认值
getOrNull //取值,越界则返回null
contains //包含
containsAll
//删除
remove
removeAll //删除有所满足入参函数的元素
drop(n) //list,返回删除前n个元素后的新list
dropLast
slice //子list
sort() //排序
sortBy //指定排序
sorted //返回新的排序后的list
//去重
distinct() //list
distinctBy(T->{}) //list,使用入参函数处理
//统计--判断
all //boolean,每个元素都满足入参函数
any //任一满足
count //满足入参函数E的个数
none //都不满足
//转换成其它类型
toHashSet
toSet
toSortedSet
zip
//转换
reverse //反转列表
reversed
asReversed //list,生成反转列表
associate //map,将E按入参函数转成pair返回
associateBy //map,将E按入参函数转成K返回
map //对每一个元素做变换后返回新的list
mapNotNull
flatMap //对每一个元素做变换后返回新的list
mapIndexed //函数入参带index
mapIndexedNotNull //list,只返回非null值
minus
minusAssign
plus
plusAssign
take //返回前n个元素
takeLast
//过滤--新增
filter //list,返回符合入参函数的E
filterNot
filterNotNull //返回非null元素
filterIsInstance //list,返回特定类型的元素
groupBy //map, 分组
intersect //set,两个容器中都包含的元素
//查找
find //返回第一个符合入参函数的元素或null
findLast
indexOf //返回第一个的索引值,无则-1
indexOfFirst //返回第一个符合入参条件的元素索引
indexOfLast
last //最后一个入参是否符合
lastIndexOf //最后一个符合条件元素索引,或-1
lastOrNull //最有一个元素是否符合,或null
single //未找到则抛出异常
singleOrNull
//最大,最小
max() //返回最大值的元素
maxBy //经过入参函数处理过的最大值
min()
minBy
//求和--递减
fold //从左往右,在基础值上求和, xx.fold(9){t,a->a+t}
foldRight //从右往左求和
reduce //从左往右递减
reduceIndexed
sumBy //求和
1.2 MutableMap
//基本示例
val readWriteMap = hashMapOf("foo" to 1, "bar" to 2)
println(readWriteMap["foo"]) // prints "1"
val snapshot: Map<String, Int> = HashMap(readWriteMap)
//属性
size //map尺寸
keys // Returns a mutable Set of all keys
values // Returns a mutable Set of all values
isEmpty() //判空
isNotEmpty
orEmpty() //如果为null,则返回新map
forEach((key,value)->{}) //循环
get //取值
getOrDefault //有则取值,无则返回传入的默认值
getOrElse //有则返回值,无则返回传入函数的返回值
getOrPut //有则返回,无则设值
getValue //key无对应值时抛出异常
clear()
put(key: K, value: V)
putAll(from: Map<out K, V>)
remove(key: K)
//统计/判断
all //boolean, 所有元素匹配
any //boolean,任一元素匹配
count //int, 返回符合入参函数的规则个数
none() //boolean,如果为空
none((k,v)->{}) //boolean,所有元素都不匹配
contains //boolean,是否包含
containsValue //boolean
//过滤--新增
filter //map,按规则过滤返回新map
filterNot //map,反向
minus //map,返回删除key(s)后的新map
minusAssign //map,删除对应的key(s)
plus //map,返回添加新pair(s)后的新map
plusAssign //添加到当前map
toSortedMap
//转换
map //list, pair用入参函数转换后放入list中返回, 和flatmap区别是入参函数的入参不同
flattmap //list,按入参函数将pair转成元素
mapKeys //map, 将key处理后当做新key
mapValues //map, 将value处理后当做新value
toMutableMap //转成可变map
//查找
maxBy //<K,V>, 返回入参函数处理后值最大的那一个pair (null if there are no entries)
MaxWith //<K,V>,入参比较函数
minBY
minWith
Kotlin容器的更多相关文章
- Kotlin入门(16)容器的遍历方式
Kotlin号称全面兼容Java,于是乎Java的容器类仍可在Kotlin中正常使用,包括大家熟悉的队列ArrayList.映射HashMap等等.不过Kotlin作为一门全新的语言,肯定还是要有自己 ...
- Android Weekly Notes Issue #286
December 3rd, 2017 Android Weekly Issue #286 本期文章包含如何通过踩坑来学习Kotlin,以及利用Kotlin的data class做MVVM状态保存,还包 ...
- kotlin基础 常见容器的取值范围
- Kotlin & Vertx 构建web服务
感想 Kotlin 是一门好语言,值得大家了解一下. Vertx 是一个好框架,也值得大家了解一下. Kotlin 写过js,也写过一点点go,主力一直是java.用了kotlin,貌似找到了常用语言 ...
- Kotlin Vertx
Kotlin & Vertx Kotlin 是一门好语言,值得大家了解一下. Vertx 是一个好框架,也值得大家了解一下. Kotlin 写过js,也写过一点点go,主力一直是java.用了 ...
- 尝试Java,从入门到Kotlin(下)
上篇已提(tu)到(cao)Java中的各种坑.习惯了C#的各种特性和语法糖后,再转到Java感觉比较别扭.最后本着反正Java也不是很熟悉,干脆再折腾折腾其他语言的破罐子破摔的心态,逛了一圈JVM语 ...
- Kotlin入门教程——目录索引
Kotlin是谷歌官方认可的Android开发语言,Android Studio从3.0版本开始就内置了Kotlin,所以未来在App开发中Kotlin取代Java是大势所趋,就像当初Android ...
- Kotlin 语言下设计模式的不同实现
偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ...
- Kotlin 特性 语法糖 优势 扩展 高阶 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- RS485总线防雷保护方案
RS485作为最为最常用的电表通讯方式之一.日常生活中雷电和静电干扰已经成为485通信总线在实际工程经常遇到的问题.故如何对芯片以及总线进行有效的保护,是摆在每一个使用者面前的一个问题.在这里,我们主 ...
- lvs-nat搭建httpd
拓扑图: #172.16.252.10 [root@~ localhost]#route -n Kernel IP routing table Destination Gateway Genmask ...
- python超大数计算
In [26]: %time a = 6789**100000CPU times: user 0 ns, sys: 0 ns, total: 0 nsWall time: 6.2 µsIn [27]: ...
- Ruby环境搭建与“Hello World”
Ruby的环境搭建比较简单,在http://rubyinstaller.org/downloads/可以得到Ruby的安装包, 安装过程没什么问题.安装完成之后需要配置一下环境变量: 在PATH中填入 ...
- /*带动画效果的hover*/
<!DOCTYPE html> /*带动画效果的hover*/ <html lang="en"> <head> <meta charset ...
- Centos 7安装与配置chef
背景:随着DevOps 逐渐流行起来,越来越多的工作需要自动化处理,而chef就是其中一款能实现自动化管理的工具,掌握类似chef这样的自动化工具,相信会使你在未来的竞争中更具优势. 俗话说“好记性不 ...
- [CentOS7] iconv编程转换
声明:本文主要总结自:鸟哥的Linux私房菜-第九章.vim 程式編輯器,如有侵权,请通知博主 (-- 源自鸟哥的私房菜) 首先用Notepad++新建个文件来做这个实验,在Windows平台下新建个 ...
- linux线程私有数据---TSD池
进程内的所有线程共享进程的数据空间,所以全局变量为所有线程共有.在某些场景下,线程需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Data)TSD来解决.在线程内部, ...
- 洛谷P1047 校门外的树
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能
rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [root@asm RedHat]# ...