1、可变集合 和 非可变集合
MutableList:可变集合
List:不可变集合 (只能取,不能添加和修改)
发现不可变集合 添加元素会报错
不可变集合更加线程安全
2、遍历
(1)、until 方式
循环递增,不包含最后一位 比如 0 util 10 实际上是 0 到9
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
for(i in 0 until ListUtils.getSize(printSettingList)){
}
(2)、..方式
循环递增,包含最后一位 比如 0 .. 10 实际上是 0 到 10
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
for(i in 0 .. ListUtils.getSize(printSettingList)-1){
}
(3)、downTo
循环递减,包含 最大index, 10..0 实际上是 10..0
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
for(i in ListUtils.getSize(printSettingList)-1 downTo 0){
}
(4)、step
循环间隔
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
for(i in 0 .. ListUtils.getSize(printSettingList)-1 step 2){
}
(5)、list循环遍历,和util 简写
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
printSettingList?.let {
for(printSettingItem in it){
}
}
(6)list 可以得到 索引和值的方法 list.withIndex
val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
printSettingList?.let {
for((i,printSettingItem) in it.withIndex()){
var index = i
var response = printSettingItem
}
}
(7)repeat 重复循环
repeat(10){
}
(8) in操作符还可以判断范围
val isContain:Boolean = "1" in listOf("1","2")
(9)forEach
mutableListOf(Account("123", "456"),Account("123", "456")).forEach {
it.name
it.type
}
(10) forEachWithIndex
mutableListOf(Account("123", "456"),Account("123", "456")).forEachWithIndex { index, it ->
it.name
it.type
}
3、获取元素的值
(1)、get(0) 、getOrNull(0)、getOrElse
listOf(1,2,3)[0]
listOf(1,2,3).getOrNull(0)
listOf(1,2,3).getOrElse(0) { 2 }
(2)、elementAt(0)、elementAtOrNull(0)、elementAtOrElse(0)
listOf(1,2,3).elementAt(0)
listOf(1,2,3).elementAtOrNull(0)
listOf(1,2,3).elementAtOrElse(0) { 2 }
(3)、firstOrNull()
listOf(1,2,3).firstOrNull()
(4)、map相关
val map = mutableMapOf<String, Boolean>().withDefault { false }
map.getOrElse("isEnable", {false})
map.getOrPut("isEnabe", {false})
(5)、获取第几个元素的值
listOf(1,2,3).component1()
listOf(1,2,3).component2()
4、筛选
val list = listOf(1,2,3,4)
// 筛选符合条件
list.filter {
it in 1..3
}
// 筛选条件多了索引
list.filterIndexed{
index, it -> index>0 && it <2
}
// 筛选不符合条件
list.filterNot {
it in 1..3
}
// 筛选非空
list.filterNotNull()
// 筛选第一个满足条件的元素,没有会返回NoSuchElementException
list.first {
it >2
}
// 筛选 第一个满足条件的元素,没有,则返回Null
list.firstOrNull {
it > 3
}
// 同firstOrNull
list.find {
it > 3
}
// 返回最后一个满足条件的元素,没有,则 返回Null
list.findLast {
it > 3
}
// 如果至少有一个元素与判断条件相符,则 返回true
list.any {
it > 2
}
// 如果全部元素与判断条件相符,则 返回true
list.all {
it > 4
}
5、集合 和 String 互转
// 集合转String,并添加分隔符
if (list.isNullOrEmpty()) "" else list.joinToString(",")
// String 转List
str?.split(",")?.toMutableList()