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 ...
随机推荐
- python unittest之断言及示例
python unintest单元测试框架提供了一整套内置的断言方法. 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来处理 注意:以上两种方式的区 ...
- cdh 安装组件 异常总结
hive 启动 要 把mysql的jar包放到/opt/cloudera/parcels/CDH-5.9.3-1.cdh5.9.3.p0.4/lib/hive/lib 下 假设有3个节点就要放3次
- 菜鸟学Nhibernate 之路---(1)
首先说一下我为什么要学这个Nhibernate,现在在公司做项目后台的逻辑层都是用动软生成的简单三层,搞来搞去都是这些东西,代码冗余量很大,每个类方法基本上都一样,真是纯正的码农,虽然后来我也尝试使用 ...
- Pycharm的远程代码编辑
作为一个从java转到python的程序猿,一直觉得python的远程代码调试能力不如java,远程调试一把需要各种改代码,牵扯到eventlet库的时候,问题就更严重,需要调整eventlet的各种 ...
- Elasticsearch2.x --DeleteByQuery
一.安装插件 要删除某个索引的一个type下的所有文档,相当于关系型数据库中的清空表操作.查阅了一些资料可以通过Delete-by-Query插件删除,首先使用插件管理器安装Delete-by-Que ...
- 从Github远程库安装Node.JS
3)从Github远程库安装Node.JS在这个方法中我们需要一些步骤来把Node.js的从Github上的远程的仓库克隆到本地仓库目录 在开始克隆(克隆)包到本地并且配制之前,我们要先安装以下依赖包 ...
- php学习笔记-可变变量
看一个例子. <?php $a = 'hello'; $hello = 'hi'; echo $$a; ?> 如果一个变量名前面有两个美元符号,那么这个变量就叫做可变变量.就拿上面这个举例 ...
- sklearn解决过拟合的例子
Learning curve 检视过拟合 sklearn.learning_curve 中的 learning curve 可以很直观的看出我们的 model 学习的进度, 对比发现有没有 overf ...
- 25. CTF综合靶机渗透(17)
靶机链接 https://www.vulnhub.com/entry/the-ether-evilscience,212 运行环境 本靶机提供了VMware的镜像,从Vulnhub下载之后解压,运行v ...
- PIP本地源搭建
Wheel包制作 # pip install wheel # mkdir ~/wheels # cd < Project > # pip wheel --wheel-dir=~/wheel ...