kotlin开发 集合函数 前言 更新集合中的内容 获取集合最后一位元素 查找集合中最长的字符串 复制集合 将集合元素转成大写 提取一个实体类集合中的某个字段为新集合   将二维数组内容转成一维数组   查找集合中首个符合要求的元素 查找集合中全部符合要求的元素 查找两个集合中交集的元素 查找两个集合中不交集的元素 判断集合中的一个元素是否满足条件 判断集合中的全部元素是否满足条件 获取满足条件的元素数量 根据判断将元素拆分成Map集合 集合升序排序 集合多元素组合升序排序 集合降序排序  

kotlin开发 集合函数
前言
更新集合中的内容
获取集合最后一位元素
查找集合中最长的字符串
复制集合
将集合元素转成大写
提取一个实体类集合中的某个字段为新集合
 
将二维数组内容转成一维数组
 
查找集合中首个符合要求的元素
查找集合中全部符合要求的元素
查找两个集合中交集的元素
查找两个集合中不交集的元素
判断集合中的一个元素是否满足条件
判断集合中的全部元素是否满足条件
获取满足条件的元素数量
根据判断将元素拆分成Map集合
集合升序排序
集合多元素组合升序排序
集合降序排序
 

  刚转kotlin开发,而且大部分时间是java与kotlin混合的情况下,所以此篇博客记录一些list集合函数操作例子.帮助与强化记忆.

更新集合中的内容

fun main() {
    val list = mutableListOf<Data>(Data("皮卡丘",1), Data("双弹瓦斯",2), Data("宝石海星",3))
    list.forEach { it.name = "宝可梦" }
    println("内容 = $list")
}

data class Data(var name: String, var id: Int)
内容 = [Data(name=宝可梦, id=1), Data(name=宝可梦, id=2), Data(name=宝可梦, id=3)]

获取集合最后一位元素

fun main() {
    val list = mutableListOf<Data>(Data("皮卡丘",1), Data("双弹瓦斯",2), Data("宝石海星",3))
    val item = list.last()
    println("内容 = $item")
}

data class Data(var name: String, var id: Int)
内容 = Data(name=宝石海星, id=3)

查找集合中最长的字符串

使用函数: maxBy

fun main() {
    val list = listOf("", "苹果", "水蜜桃")
    val lengthLongestItem = list.maxBy { it.length }
    print("结果 : $lengthLongestItem")
}
结果:水蜜桃

复制集合

fun main() {
    val list = mutableListOf<String>("", "苹果", "水蜜桃")
    val newList = list.toMutableList()
    list.removeAt(2)//删除第二个值,来确定newList是独立内存地址的新集合
    println("结果 : $list")
    println("结果 : $newList")
}
结果 : [梨, 苹果]
结果 : [梨, 苹果, 水蜜桃]

将集合元素转成大写

使用函数:map

fun main() {
    val list = mutableListOf<String>("pear", "apple", "peach")
    val netList = list.map { it.toUpperCase() }
    println("结果 : $list")
    println("结果 : $netList")
}
结果 : [pear, apple, peach]
结果 : [PEAR, APPLE, PEACH]

提取一个实体类集合中的某个字段为新集合

使用函数:map

fun main() {
    val list = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val netList = list.map { it.name }
    println("结果 : $list")
    println("结果 : $netList")
}

data class Data(val name: String,val id: Int)
结果 : [Data(name=晴, id=1), Data(name=小雨, id=2), Data(name=雨夹雪, id=3)]
结果 : [晴, 小雨, 雨夹雪]

 

将二维数组内容转成一维数组

使用函数:flatMap

fun main() {
    val data1 = Data(mutableListOf("A", "B", "C"), 1)
    val data2 = Data(mutableListOf("E", "F", "G"), 2)
    val data3 = Data(mutableListOf("H", "Y", "J"), 3)
    val list = mutableListOf<Data>(data1, data2, data3)
    val newList = list.flatMap { data: Data -> data.list.asIterable() }
    println("newList = $newList")

}

data class Data(val list: MutableList<String>, val id: Int)

结果:

newList = [A, B, C, E, F, G, H, Y, J]

 

查找集合中首个符合要求的元素

使用函数:find

fun main() {
    val intArray = listOf<Int>(1, 2, 3, 4, 5, 6, 7, 8)
    val item = intArray.find { it < 2 }
    println("结果: $item")
}
结果: 1

查找集合中全部符合要求的元素

使用函数: filter

例子1

fun main() {
    val list = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val netList = list.filter { it.name == "雨夹雪" }
    println("结果 : $list")
    println("结果 : $netList")
}

data class Data(val name: String,val id: Int)
结果 : [Data(name=晴, id=1), Data(name=小雨, id=2), Data(name=雨夹雪, id=3)]
结果 : [Data(name=雨夹雪, id=3)]

例子2

使用函数: filter

fun main() {
    val list = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val netList = list.filter { it.name.length > 1 }
    println("结果 : $list")
    println("结果 : $netList")
}

data class Data(val name: String, val id: Int)
结果 : [Data(name=晴, id=1), Data(name=小雨, id=2), Data(name=雨夹雪, id=3)]
结果 : [Data(name=小雨, id=2), Data(name=雨夹雪, id=3)]

查找两个集合中交集的元素

 使用函数: filter

fun main() {
    val list1 = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val list2 = mutableListOf<String>("", "暴风雪", "晴转多云")
    val netList = list1.filter { it.name in list2 }
    println("结果 : $netList")
}

data class Data(val name: String, val id: Int)
结果 : [Data(name=晴, id=1)]

查找两个集合中不交集的元素

例子1

使用函数: filter 

fun main() {
    val list1 = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val list2 = mutableListOf<Int>(2, 4, 6)
    val netList = list1.filter { it.id !in list2 }
    println("list1不交集的内容为 : $netList")
}

data class Data(val name: String, val id: Int)
list1不交集的内容为 : [Data(name=晴, id=1), Data(name=雨夹雪, id=3)]

例子2

使用函数: filter , map

fun main() {
    val list1 = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val list2 = mutableListOf<Data>(Data("小雨", 4), Data("", 5), Data("暴风雪", 6))
    val netList = list1.filter { it.name !in list2.map { it1 -> it1.name } }
    println("结果 : $netList")
}

data class Data(val name: String, val id: Int)
list1不交集的内容为 : [Data(name=雨夹雪, id=3)]

判断集合中的一个元素是否满足条件

例子1

使用函数:any

fun main() {
    val list = mutableListOf<Int>(1, 2, 3)
    val result = list.any { it > 2}
    println("list的集合内容是否有大于2 : $result")
}
list的元素否有大于2 : true

例子2

fun main() {
    val list1 = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val list2 = mutableListOf<Int>(3, 6, 9)
    val result = list1.any { it.id in list2 }
    println("list1的元素字段id是否包含list2的元素 : $result")
}

data class Data(val name: String, val id: Int)
list1的元素字段id是否包含list2的元素 : true

判断集合中的全部元素是否满足条件

 使用函数:all

fun main() {
    val list1 = mutableListOf<Data>(Data("", 1), Data("小雨", 2), Data("雨夹雪", 3))
    val list2 = mutableListOf<Int>(1, 2, 3)
    val result = list1.all { it.id in list2 }
    println("list1的元素字段id是否与list2的元素一致 : $result")
}

data class Data(val name: String, val id: Int)
list1的元素字段id是否与list2的元素一致 : true

获取满足条件的元素数量

使用函数:count

fun main() {
    val intArray = listOf<Int>(1, 2, 3, 4, 5, 6, 7, 8)
    val num = intArray.count() { it < 4 }
    println("结果: $num")
}
结果: 3

根据判断将元素拆分成Map集合

 使用函数:groupBy

将奇数与偶数拆分

fun main() {
    val intArray = listOf<Int>(1, 2, 3, 4, 5, 6, 7, 8)
    val map = intArray.groupBy { it % 2 == 0 }
    println("结果: $map")
}
结果: {false=[1, 3, 5, 7], true=[2, 4, 6, 8]}

集合升序排序

请注意,排序一律需要使用 mutableList 可变集合

例子1

使用函数:sort

fun main() {
    val list = mutableListOf<Int>(7, 5, 6, 8, 2, 3, 1, 4)
    list.sort()
    println("内容 =  $list")
}
内容 =  [1, 2, 3, 4, 5, 6, 7, 8]

例子2

使用函数:sortBy 

fun main() {
    val list = mutableListOf<Data>(Data("皮卡丘", 4), Data("双弹瓦斯", 1), Data("宝石海星", 2), Data("可达鸭", 3))
    list.sortBy { it.id }
    println("内容 = $list")
}

data class Data(var name: String, var id: Int)
内容 = [Data(name=双弹瓦斯, id=1), Data(name=宝石海星, id=2), Data(name=可达鸭, id=3), Data(name=皮卡丘, id=4)]

集合多元素组合升序排序

使用函数:sortWith

fun main() {
    val list = mutableListOf<Data>(Data("皮卡丘", 4), Data("双弹瓦斯", 1), Data("宝石海星", 2), Data("可达鸭", 3), Data("喵喵", 5))
    //先以名称长度排序,再以id排序
    list.sortWith(compareBy({ it.name.length }, { it.id }))
    println("内容 = $list")
}

data class Data(var name: String, var id: Int)
内容 = [Data(name=喵喵, id=5), Data(name=可达鸭, id=3), Data(name=皮卡丘, id=4), Data(name=双弹瓦斯, id=1), Data(name=宝石海星, id=2)]

集合降序排序

使用函数:sortByDescending 

fun main() {
    val list = mutableListOf<Data>(Data("皮卡丘", 4), Data("双弹瓦斯", 1), Data("宝石海星", 2), Data("可达鸭", 3), Data("喵喵", 5))
    list.sortByDescending { it.id  }
    println("内容 = $list")
}

data class Data(var name: String, var id: Int)
内容 = [Data(name=喵喵, id=5), Data(name=皮卡丘, id=4), Data(name=可达鸭, id=3), Data(name=宝石海星, id=2), Data(name=双弹瓦斯, id=1)]

 

https://www.jianshu.com/p/933977603e4c

End