groovy中List调用findAll与collect的区别与注意点

一、方法侧重点

  • collect 侧重遍历,可以理解为for循环
  • findAll 侧重过滤,可以理解为filter

二、调用方式

  • List.collect{这里可以对每个元素做处理}, 返回处理过的新List
  • List.findAll{ it.age > 10}, it是单个元素,可以对属性做判断, 返回过滤后的新List
  • findAll 也可以通过return进行过滤
        Map m1 = [age:1,name:"a"]
        Map m2 = [age:2,name:"b"]
        Map m3 = [age:3,name:"c"]
        Map m4 = [age:4,name:"d"]

        List list = [m1,m2,m3,m4]
        List listNew = list.findAll{
            if(it.age){
                if(it.age > 2){
                    it.name = it.name+"ok"
                    return it// 也可以return true,只要返回能区分开就行,groovy很宽松
                }
            }
        }
        println listNew

三、注意collect中使用return,可能包含null元素

  • collect闭包中也可以写return ,但如果有条件判断,返回的List可能包含null
  • 注意一点,collect方法返回的元素数量不变
  • 可以使用.grep()去掉null,元素,但这样,不如直接使用findAll
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值