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容器的更多相关文章

  1. Kotlin入门(16)容器的遍历方式

    Kotlin号称全面兼容Java,于是乎Java的容器类仍可在Kotlin中正常使用,包括大家熟悉的队列ArrayList.映射HashMap等等.不过Kotlin作为一门全新的语言,肯定还是要有自己 ...

  2. Android Weekly Notes Issue #286

    December 3rd, 2017 Android Weekly Issue #286 本期文章包含如何通过踩坑来学习Kotlin,以及利用Kotlin的data class做MVVM状态保存,还包 ...

  3. kotlin基础 常见容器的取值范围

  4. Kotlin & Vertx 构建web服务

    感想 Kotlin 是一门好语言,值得大家了解一下. Vertx 是一个好框架,也值得大家了解一下. Kotlin 写过js,也写过一点点go,主力一直是java.用了kotlin,貌似找到了常用语言 ...

  5. Kotlin Vertx

    Kotlin & Vertx Kotlin 是一门好语言,值得大家了解一下. Vertx 是一个好框架,也值得大家了解一下. Kotlin 写过js,也写过一点点go,主力一直是java.用了 ...

  6. 尝试Java,从入门到Kotlin(下)

    上篇已提(tu)到(cao)Java中的各种坑.习惯了C#的各种特性和语法糖后,再转到Java感觉比较别扭.最后本着反正Java也不是很熟悉,干脆再折腾折腾其他语言的破罐子破摔的心态,逛了一圈JVM语 ...

  7. Kotlin入门教程——目录索引

    Kotlin是谷歌官方认可的Android开发语言,Android Studio从3.0版本开始就内置了Kotlin,所以未来在App开发中Kotlin取代Java是大势所趋,就像当初Android ...

  8. Kotlin 语言下设计模式的不同实现

    偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ...

  9. Kotlin 特性 语法糖 优势 扩展 高阶 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. B/S测试与C/S测试之区别

    我们在日常功能测试工作中,常常依据测试对象和测试目标的不同分为四个级别的测试,单元测试.集成测试.系统测试和验收测试,但是往往忽略了被测应用系统架构.在测试过程中针对不同的系统架构,测试的侧重点也不同 ...

  2. linux命令-vim一般模式下光标移动

    vim 有一般模式,编辑模式,命令模式 ///////一般模式可以光标移动,复制,剪切,粘贴     编辑模式可以输入想输入的字符       命令模式刚才用到了set nu //////////// ...

  3. DevKit及rails的安装

    Ruby on Rails的安装,是从被称为RubyGems的包管理系统开始的. Ruby on Rails是由Ruby处理系统的类库的.被称为"gem"的格式来进行配置的.&qu ...

  4. [dp]最长单调递增子序列LIS

    https://www.51nod.com/tutorial/course.html#!courseId=12 解题关键: 如果将子序列按照长度由短到长排列,将他们的最大元素放在一起,形成新序列$B\ ...

  5. 11.Weblogic-SSRF漏洞复现

    应为这一阵正好在学习SSRF漏洞,又苦于本人太菜没有挖到SSRF,只能复现... 先贴出很早之前央视网SSRF可窥探内网(Weblogic SSRF案例):https://www.secpulse.c ...

  6. HDU 5971 Wrestling Match (二分图)

    题意:给定n个人的两两比赛,每个人要么是good 要么是bad,现在问你能不能唯一确定并且是合理的. 析:其实就是一个二分图染色,如果产生矛盾了就是不能,否则就是可以的. 代码如下: #pragma ...

  7. (JAVA)String类型的逻辑语句编译

    项目中遇到了动态配置条件触发相应事件的需求,需要根据String类型的逻辑语句,以及动态获取的数据,计算数据对应的结果,java实现.解决思路及代码实现如下,有需要的同学请自取. 一.需求提取 根据需 ...

  8. Linux之shell备份数据库

    功能概述: 使用shell脚本对服务器的数据库(全部或指定数据库)进行备份.对15天(固定天数)之前的数据库备份进行删除 命令实现: 待定

  9. C4-总结

    呃,很难受的比赛,中途做到口干舌燥还想尿尿//哦,题目,出的很棒,什么都可以做做,什么都做不下来. 怎么说呢?好像也没犯什么错误,除了日常开始手抖了一下...后面状态进入挺快的,而且遗憾?3-2吧,t ...

  10. 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: ...