文章目录

  • 一、使用集合的 findAll 方法查找集合中符合匹配条件的所有元素
    • 1、闭包中使用 == 作为 findAll 方法的查找匹配条件
    • 2、闭包中使用 is 作为 findAll 方法的查找匹配条件
    • 3、闭包中使用 true 作为 findAll 方法的查找匹配条件
  • 二、完整代码示例

一、使用集合的 findAll 方法查找集合中符合匹配条件的所有元素


在上一篇博客 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 ) 中 , 介绍了使用 find 方法 , 获取集合中第一个符合 闭包匹配条件的元素 ;

使用集合的 findAll 方法 , 可以 获取 集合 中 所有 符合 闭包匹配条件的元素 , 这些元素将使用一个新的集合盛放 , findAll 方法的返回值就是返回该符合 匹配条件 的元素 ;

集合的 findAll 方法原型 :

    /*** 查找与关闭条件匹配的所有值。* <pre class="groovyTestCase">assert [2,4] == [1,2,3,4].findAll { it % 2 == 0 }</pre>** @param self    集合* @param closure 闭包条件* @return 符合条件匹配的新的子集合* @since 1.5.6*/public static <T> Collection<T> findAll(Collection<T> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure closure) {Collection<T> answer = createSimilarCollection(self);Iterator<T> iter = self.iterator();return findAll(closure, answer, iter);}

1、闭包中使用 == 作为 findAll 方法的查找匹配条件

在集合的 findAll 方法中 , 闭包中使用 == 作为查找匹配条件 , 查找集合中值为 “1” 的元素 , 此处的 == 等价于 Java 中调用 String 的 equals 方法 , 不是比较地址 ;

代码示例 :

        // I. 闭包中使用 == 作为查找匹配条件def findCollectionResult = list.findAll{// 查找集合中值为 "1" 的元素// 此处的 == 等价于 Java 中调用 String 的 equals 方法 , 不是比较地址it == "1"}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [1, 1]println findCollectionResult

执行结果 :

[1, 2, 3, 1, 2, 3]
[1, 1]

2、闭包中使用 is 作为 findAll 方法的查找匹配条件

在集合的 findAll 方法中 , 闭包中使用 is 作为查找匹配条件 , 查找集合中与 “3” 对象相同地址的元素 , 此处的 is 方法等价于调用 String 的 == 运算 , 不是比较值 ;

代码示例 :

        // II. 闭包中使用 is 作为查找匹配条件findCollectionResult = list.findAll{// 查找集合中与 "3" 对象相同地址的元素// 此处的 is 方法等价于调用 String 的 == 运算 , 不是比较值it.is("3")}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [3, 3]println findCollectionResult

执行结果 :

[1, 2, 3, 1, 2, 3]
[3, 3]

3、闭包中使用 true 作为 findAll 方法的查找匹配条件

在集合的 findAll 方法中 , 闭包中使用 true 作为查找匹配条件 , 查找集合中不为空的元素 , 此处返回第一个不为空的元素 ;

代码示例 :

        // III. 闭包中使用 true 作为条件 , 返回第一个不为空的元素findCollectionResult = list.findAll{// 返回第一个不为空的元素true}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [1, 2, 3, 1, 2, 3]println findCollectionResult

执行结果 :

[1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3]

二、完整代码示例


完整代码示例 :

class Test {static void main(args) {// 为 ArrayList 设置初始值def list = ["1", "2", "3", "1", "2", "3"]// I. 闭包中使用 == 作为查找匹配条件def findCollectionResult = list.findAll{// 查找集合中值为 "1" 的元素// 此处的 == 等价于 Java 中调用 String 的 equals 方法 , 不是比较地址it == "1"}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [1, 1]println findCollectionResult// II. 闭包中使用 is 作为查找匹配条件findCollectionResult = list.findAll{// 查找集合中与 "3" 对象相同地址的元素// 此处的 is 方法等价于调用 String 的 == 运算 , 不是比较值it.is("3")}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [3, 3]println findCollectionResult// III. 闭包中使用 true 作为条件 , 返回第一个不为空的元素findCollectionResult = list.findAll{// 返回第一个不为空的元素true}// 打印 [1, 2, 3, 1, 2, 3]println list// 打印 [1, 2, 3, 1, 2, 3]println findCollectionResult}
}

执行结果 :

[1, 2, 3, 1, 2, 3]
[1, 1]
[1, 2, 3, 1, 2, 3]
[3, 3]
[1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3]

【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )相关推荐

  1. 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )

    文章目录 一.使用集合的 find 方法查找集合元素 1.闭包中使用 == 作为查找匹配条件 2.闭包中使用 is 作为查找匹配条件 3.闭包中使用 true 作为查找匹配条件 二.完整代码示例 一. ...

  2. JavaScript实现使用 BACKTRACKING 方法查找集合的幂集算法

    JavaScript实现使用 BACKTRACKING 方法查找集合的幂集算法(附完整源码) btPowerSet.js完整源代码 btPowerSet.test.js完整源代码 btPowerSet ...

  3. JavaScript实现使用 BITWISE 方法查找集合的幂集算法(附完整源码)

    JavaScript实现使用 BITWISE 方法查找集合的幂集算法(附完整源码) bwPowerSet.js完整源代码 bwPowerSet.test.js完整源代码 bwPowerSet.js完整 ...

  4. List.removeIf():删除集合中满足给定条件的所有元素

    今天偶然间发现了Collection在1.8新增了一个removeIf(Predicate<? super E> filter)方法,能够实现面试官们常问的:如何一边遍历,一边删除. 首先 ...

  5. excil mysql查询 条件_excel多条件查找 Excel中实现多条件查找的15种方法

    excel多条件查找 Excel中实现多条件查找的15种方法,平凡的世界平凡的你,努力学习使我们变得不平凡,今天要介绍的知识是excel多条件查找的相关知识,你准备好学习excel多条件查找 Exce ...

  6. 【Groovy】集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )

    文章目录 一.集合中有集合元素时调用 flatten 函数拉平集合元素 二.完整代码示例 一.集合中有集合元素时调用 flatten 函数拉平集合元素 在上一篇博客 [Groovy]集合遍历 ( 操作 ...

  7. 【Groovy】集合遍历 ( 调用集合的 any 函数判定集合中是否有指定匹配规则的元素 | 代码示例 )

    文章目录 一.集合的 any 函数 二.集合的 any 函数代码示例 一.集合的 any 函数 集合的 any 函数 , 用于判断集合中是否有 满足闭包中的条件 的元素 , 返回一个布尔值 , tru ...

  8. 【Groovy】map 集合 ( map 集合操作符重载 | 使用 << 操作符添加一个元素 | 代码示例 )

    文章目录 一.使用 " << " 操作符添加一个元素 二.代码示例 一.使用 " << " 操作符添加一个元素 对 map 集合 使用 ...

  9. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )

    文章目录 I . Native 调用 Java 方法 II . JNIEnv *env 与 jobject instance III . JavaVM *vm IV . 局部引用 与 全局引用 分析 ...

最新文章

  1. 小A与欧拉路(牛客-树的直径)
  2. 每句话都可以品半辈子!!!
  3. 算法-- 删除排序链表中的重复元素(Java)
  4. C# WebService发布与调用方法(转)
  5. node 多进程 vs java_node多进程服务器
  6. 7 种 JVM 垃圾收集器,看完我跪了。。
  7. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)
  8. 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)
  9. 11.4 iftop:动态显示网络接口流量信息
  10. Hibernate 事物隔离级别 深入探究
  11. 文案写作软件_11种可改善网站用户体验的文案写作技术
  12. django类视图简单使用和源码解析
  13. java 限流熔断_SpringCloud Alibaba微服务实战五 - 限流熔断
  14. 编译原理完整学习笔记(七):优化代码
  15. .NET System.Web.HttpContext.Current.Request报索引超出数组界限。
  16. 服务器状态 fadein,aria2-BT服务器地址的可用trackers列表(已接手)
  17. Geek 极客大挑战2021 web
  18. java.sql.SQLException: No database selected
  19. 以P2P网贷为例互联网金融产品如何利用大数据做风控?
  20. [人生故事] -- 花朵静悄悄地开放

热门文章

  1. CSS3无前缀脚本prefixfree.js与Animatable使用
  2. Spring注解使用方法
  3. 【挑战极限】最短AJAX创建代码
  4. 4.ClassLink - 一种新型的VPC 经典网络的连接方式
  5. 计算一个二进制数中数字“1”的个数(位运算)
  6. mysql的高级特性
  7. usb-to-isp-for-stm32
  8. hive内部表与外部表区别
  9. iOS tableViewCell自适应高度 第三发类库
  10. 实验三进程调度模拟程序