kotlin--操作符

主要针对集合操作,注释上都有解释,直接贴代码。

class ListPrise {
    val TAG:String ="listPrise==="
    var listData = listOf<Int>(123,23,123,22,12,4,12)
    /**
     * ------------------------------------------------
     * 下标操作类
     */
    /**
     * 是否包含某个元素
     */
    fun containsPs(){
        val contains = listData.contains(12)
        Log.i(TAG,contains.toString())
    }
    //返回对应的元素,越界会抛IndexOutOfBoundsException
    fun elementAt(){
        val s = listData.elementAt(3)
        Log.i(TAG,s.toString())
    }
    //返回符合条件的第一个元素,没有 返回null
    fun firstOrNull(){
        val s = listData.firstOrNull {it==23}
        Log.i(TAG,s.toString())
    }
    //返回符合条件的最后一个元素,没有 返回null
    fun lastOrNull(){
        val s = listData.firstOrNull {it<23}
        Log.i(TAG,s.toString())
    }
    //返回指定元素的下标,没有 返回-1
    fun indexOf(){
        val s = listData.indexOf(23)
        Log.i(TAG,s.toString())
    }
    //返回符合条件的单个元素,如有没有符合或超过一个,返回null
    fun singleOrNull(){
        val s = listData.singleOrNull { it<5 }
        Log.i(TAG,s.toString())
    }

    /**
     * ------------------------------------------------
     * 判断类
     */
    //判断集合中 是否有满足条件 的元素
    fun any(){
        val s = listData.any { it>23 }
        Log.i(TAG,s.toString())
    }
    //判断集合中的元素 是否都满足条件
    fun all(){
        val s = listData.all { it<100 }
        Log.i(TAG,s.toString())
    }
    //判断集合中是否 都不满足条件,是则返回true
    fun none(){
       val s = listData.none { it>0 }
        Log.i(TAG,s.toString())
    }
    //查询集合中 满足条件 的 元素个数
    fun count(){
        val s = listData.count(){
            it <5
        }
        Log.i(TAG,s.toString())
    }
    //从 第一项到最后一项进行累计
    fun reduce(){
        val s = listData.reduce { acc, i -> acc}
        Log.i(TAG,s.toString())
    }
    /**
     * ------------------------------------------------
     * 过滤类
     */
    //过滤 掉所有 不满足条件 的元素
    fun filter(){
        val s = listData.filter { it>100 }
        Log.i(TAG,s.toString())
    }
    // 过滤所有  满足条件的元素
    fun filterNot(){
        val s = listData.filterNot { it<5 }
        Log.i(TAG,s.toString())
    }
    //过滤NULL
    fun filterNotNull(){
        val s = listData.filterNotNull()
        Log.i(TAG,s.toString())
    }
    //返回前 n 个元素
    fun take(){
        val s = listData.take(3)
        Log.i(TAG,s.toString())
    }
    /**
     * ------------------------------------------------
     * 转换类
     */
    //转换成另一个集合(与上面我们实现的 convert 方法作用一样)

    fun map(){
        val s = listData.map  {it+20>100}
        Log.i(TAG,s.toString())//结果:[true, false, true, false, false, false, false]
    }
    //除了转换成另一个集合,还可以拿到Index(下标);
    fun mapIndexed(){
        val s = listData.mapIndexed { index, i -> i }
        Log.i(TAG,s.toString())
    }
    //执行转换前过滤掉 为 NULL 的元素
    fun mapNotNull(){
        val s = listData.mapNotNull { it >222 }
        Log.i(TAG,s.toString())
    }
    //自定义逻辑合并两个集合;
    fun flatMap(){
        var lis2 = listOf<String?>("sdds","b")
        val s = listData.flatMap { lis2}
        Log.i(TAG,s.toString()) //结果[sdds, b, sdds, b, sdds, b, sdds, b, sdds, b, sdds, b, sdds, b]
    }
    //按照某个条件分组,返回Map;
    fun groupBy(){
        var s = listData.groupBy { it>100 }

        Log.i(TAG,s.toString())//结果 {true=[123, 123], false=[23, 22, 12, 4, 12]}
    }
    //反序

    fun reversed(){
        var s = listData.reversed()
        Log.i(TAG,s.toString())//[12, 4, 12, 22, 123, 23, 123]
    }
    //  升序
    fun sorted(){

        var s = listData.sorted()
        Log.i(TAG,s.toString())// [4, 12, 12, 22, 23, 123, 123]
    }
    //降序
    fun sortedDescending(){
        var s= listData.sortedDescending()
        Log.i(TAG,s.toString())//[123, 123, 23, 22, 12, 12, 4]
    }

    //自定义排序
    fun sortedBy(){
        var listP = ArrayList<Pepole>()
        for (i in 1..10){
            listP.add(Pepole(Random().nextInt(50),Random().nextInt(20)))
        }
        var s = listP.sortedBy { it.age }
        Log.i(TAG,s.toString())//[Pepole(age=3, year=13), Pepole(age=3, year=13), Pepole(age=14, year=19), Pepole(age=26, year=4), Pepole(age=35, year=5), Pepole(age=35, year=10), Pepole(age=36, year=14), Pepole(age=42, year=17), Pepole(age=45, year=10), Pepole(age=47, year=7)]

    }
    class Pepole(var age:Int,var year:Int){
        override fun toString(): String {
            return "Pepole(age=$age, year=$year)"
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值