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 ...
随机推荐
- Ruby中print、p、puts的区别
三个方法的作用都是将一个字符串打印到控制台 比较项目 puts print p 换行符 末尾添加换行符 末尾不加换行符 末尾添加换行符 非字符串对象的输出 调用该对象的to_s方法 ...
- net start sql server (instance)
如何启动 SQL Server 实例(net 命令) 其他版本 可以使用 Microsoft Windows net 命令启动 Microsoft SQL Server 服务. 启动 SQL Se ...
- LAMP 2.0Apache日志切割
每次访问网站就会产生若干条日志,当然前提是已经配置了日志. 配置日志的文件在 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把注释掉的这两行打 ...
- 写一个c程序辨别系统是大端or小端字节序
字节序有两种表示方法:大端字节序(big ending),小端字节序(little ending) 看一个unsigned short 数据,它占2个字节,给它赋值0x1234.若采用的大端字节序, ...
- PCLVisualizer可视化类(3)
viewer->addLine<pcl::PointXYZRGB> (cloud->points[0], cloud->points[cloud->size() - ...
- ubuntu14.04装完系统更新后桌面挂了
一开始是只显示个鼠标什么都没有,ctrl-alt-1切到控制台下,把lightdm重启下再进去,多了两个桌面图标,但是顶栏和侧栏都没有,也就是根本没法运行其它程序. 但是幸好桌面右键菜单里有一个“在控 ...
- linux上运行jmeter-server失败
1. 在linux上运行jmeter-server报如下错误 处理办法: 通过如下命令运行 ./jmeter-server -Djava.rmi.server.hostname=192.168.16. ...
- <c和指针>学习笔记5动态内存分配和预处理器
1 动态内存 比如声明数组得时候,我们需要提前预估数组长度,分配大了浪费,少了就更不好操作了.从而引入动态分配,需要的时候再分配. (1)malloc和free void *malloc(size_t ...
- Spring入门第四课
注入参数详解:null值和级联属性 可以使用专用的<null/>元素标签为Bean的字符串或其他对象类型的属性注入null值. 和Struts,Hiberante等框架一样,Spring支 ...
- Linux awk指令详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...