Kotlin-Stream01

//声明数据类
data class Apple(var id: Int?, var name: String?, var money: BigDecimal?, var num: Int?) {
    constructor() : this(null, null, null, null)
    fun getMe() = this
    fun getMoney() = money!!.toDouble()
}


fun main() {
    val appleList = ArrayList<Apple>() //存放apple对象集合

    val apple1 = Apple(1, "苹果1", BigDecimal("3.25"), 10)
    val apple12 = Apple(1, "苹果2", BigDecimal("1.35"), 20)
    val apple2 = Apple(2, "香蕉", BigDecimal("2.89"), 30)
    val apple3 = Apple(3, "荔枝", BigDecimal("9.99"), 40)
    //添加值
    appleList.add(apple1)
    appleList.add(apple12)
    appleList.add(apple2)
    appleList.add(apple3)

    //分组
    appleList.also { println("分组:") }.groupBy(Apple::id, Apple::getMe).forEach {
            (t, u) -> println("\t$t    ->   $u")
    }


    //List转Map
    appleList.also { println("List转Map:") }.associateBy { it.id }.forEach { (t, u) ->
        println("\t$t    ->   $u")
    }


    //过滤Filter
    appleList.also { println("过滤Filter:") }.filter { it.name != "香蕉" }.forEach { println("\t$it") }

    //求和
    println("\t 总金额为:${appleList.also { println("求和:") }.sumByDouble { it.getMoney() }}元")

    //最值(按照数量比较)
    println("最大值:" + appleList.maxWith(kotlin.Comparator { o1, o2 -> if (o1.num!! > o2.num!!) 1 else -1 }))
    println("最小值:" + appleList.minWith(kotlin.Comparator { o1, o2 -> if (o1.num!! > o2.num!!) 1 else -1 }))

    //去重(除去id重复的数据)
    appleList.also { println("去重") }.distinctBy { it.id }.forEach { println("\t $it") }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healthLau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值