美文网首页
集合的函数API

集合的函数API

作者: 主音King | 来源:发表于2020-08-10 10:00 被阅读0次

    基础 filter 和 map

    filter进行条件过滤需要的新集合

            val list = listOf(1, 2, 3, 4)
            // 过滤出偶数 2,4
            Log.d(TAG, "test:${list.filter { it % 2 == 0 }} ")
            val people = listOf(Person("George", 18), Person("Bob", 19))
            // 过滤出大于18岁的
            Log.d(TAG, "test: ${people.filter { it.age > 18 }}")
    

    map进行元素操作改变元素内容,生成新集合

            val list = listOf(1, 2, 3, 4)
            // 对元素进行平方
            Log.d(TAG, "test: ${list.map { it * it }}")
    

    all、any、count、find判断条件

    all:是否全部满足条件 Boolean
    any:是否存在这个条件 Boolean
    count:满足条件的个数 Int
    find:找到存在的对象 T(如果有多个,则返回第一个)

            val canIn27 = { p: Person -> p.age <= 27 }
            val people = listOf(Person("a", 18), Person("a", 19), Person("c", 28))
            // 条件判断
            Log.d(
                TAG, "是否都小于27岁: ${people.all(canIn27)} 是否存在小于27岁的:${people.any(canIn27)}" +
                        " 有多少个小于27岁:${people.count(canIn27)} 找到小于27岁:${people.find(canIn27)}"
            )
    

    groupBy 列表换成分组map Map<Key,Value>

            val people  = listOf(Person("a",18),Person("b",18),Person("c",27))
            // Map: key->value  eg: name->Person
            Log.d(TAG, "test: ${people.groupBy { it.name }}")
    

    flatMap 和 flatten 处理嵌套集合中的元素

    flatMap:对集合中每个元素做变换(映射);把多个列表合并(平铺)成一个列表
    flatten:不需要做任何变换,只是平铺一个集合

            val books = listOf(Book("a", listOf("a1","a2")),Book("b", listOf("b1","b2")))
            val str = listOf("abc","def")
            val list = listOf(1..3,4..7,9..11)
            Log.d(TAG, "输出author集合: ${books.flatMap { it.author }.toSet()} 输出字符集合:${str.flatMap { it.toList() }}" +
                    " 平铺集合:${list.flatten()}")
    
    class Book(val title:String, val author:List<String>)
    

    相关文章

      网友评论

          本文标题:集合的函数API

          本文链接:https://www.haomeiwen.com/subject/voysrktx.html