• 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
* 求List1有的但是List2没有的元素 public static List<String> subList(List<String> list1, List<String> list2) { Map<String, String> tempMap = list2.parallelStream().collect(Collectors.toMap(Function.identity() 使用collect 获取List的属性集合时,会存在null元素 这不是我想要的,groovy似乎没有lamda表达式的写法 定义变量,通过循环添加又不是我想要的,感觉不是很优雅 2 可行写法 lamda加上了groovycollect方法 persons.stream().filter(c->{return c.name!=null;}).collect{it.name} 纯粹的lamda写法 persons.stream().filter
List<Order> list = new ArrayList<User>(); Order o1 = new Order("1","MCS-2019-1123"); list.add(o1 ); Order o2= new Order("2","MCS-2019-1124"); list....
list.stream().map().collect() 的含义 起因:最近在学习别人的源码的时候,在登陆验证权限的时候看到了这样一坨代码 List roles = roleDao.selectByUserId(user.getId()); List roleIds = roles.stream() .map(Role::getId) .collect(Collectors.toList()); 傻傻的我看到之后虽然知道这是1.8新特性,但是因为没接触过而不知道是什么意思,搜索了一番便在这里记录一下,上面
一、groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 。 作为跑在JVM的另一种语言,groovy语法与 Java 语言的语法很相似。同时,Groovy 抛弃了java烦琐的文法。同样的语句,使用groovy能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。 二、开发环境 1、  jdk 1.5以上 2、  ...
//根据某一元素去重 List<Object> list = lists.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>( Comparator.compar 1、list 的获取、添加、删除元素 添加方法:list.add(list2);获取方法:list.get(index); 删除方法:list.remove(index) --按索引删除;list.remove(Obj o) --按元素内容删除; List<String> person=new ArrayList<>(); person.add("jackie");