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 ...
随机推荐
- B/S测试与C/S测试之区别
我们在日常功能测试工作中,常常依据测试对象和测试目标的不同分为四个级别的测试,单元测试.集成测试.系统测试和验收测试,但是往往忽略了被测应用系统架构.在测试过程中针对不同的系统架构,测试的侧重点也不同 ...
- linux命令-vim一般模式下光标移动
vim 有一般模式,编辑模式,命令模式 ///////一般模式可以光标移动,复制,剪切,粘贴 编辑模式可以输入想输入的字符 命令模式刚才用到了set nu //////////// ...
- DevKit及rails的安装
Ruby on Rails的安装,是从被称为RubyGems的包管理系统开始的. Ruby on Rails是由Ruby处理系统的类库的.被称为"gem"的格式来进行配置的.&qu ...
- [dp]最长单调递增子序列LIS
https://www.51nod.com/tutorial/course.html#!courseId=12 解题关键: 如果将子序列按照长度由短到长排列,将他们的最大元素放在一起,形成新序列$B\ ...
- 11.Weblogic-SSRF漏洞复现
应为这一阵正好在学习SSRF漏洞,又苦于本人太菜没有挖到SSRF,只能复现... 先贴出很早之前央视网SSRF可窥探内网(Weblogic SSRF案例):https://www.secpulse.c ...
- HDU 5971 Wrestling Match (二分图)
题意:给定n个人的两两比赛,每个人要么是good 要么是bad,现在问你能不能唯一确定并且是合理的. 析:其实就是一个二分图染色,如果产生矛盾了就是不能,否则就是可以的. 代码如下: #pragma ...
- (JAVA)String类型的逻辑语句编译
项目中遇到了动态配置条件触发相应事件的需求,需要根据String类型的逻辑语句,以及动态获取的数据,计算数据对应的结果,java实现.解决思路及代码实现如下,有需要的同学请自取. 一.需求提取 根据需 ...
- Linux之shell备份数据库
功能概述: 使用shell脚本对服务器的数据库(全部或指定数据库)进行备份.对15天(固定天数)之前的数据库备份进行删除 命令实现: 待定
- C4-总结
呃,很难受的比赛,中途做到口干舌燥还想尿尿//哦,题目,出的很棒,什么都可以做做,什么都做不下来. 怎么说呢?好像也没犯什么错误,除了日常开始手抖了一下...后面状态进入挺快的,而且遗憾?3-2吧,t ...
- Python实现返回指定范围内的所有素数
# 获取a, b范围的所有素数 def func(a, b): li = [] for i in range(a, b+1): for j in range(2, i): if i % j == 0: ...