【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
文章目录
- 一、使用集合的 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 方法查找集合中符合匹配条件的所有元素 | 代码示例 )相关推荐
- 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
文章目录 一.使用集合的 find 方法查找集合元素 1.闭包中使用 == 作为查找匹配条件 2.闭包中使用 is 作为查找匹配条件 3.闭包中使用 true 作为查找匹配条件 二.完整代码示例 一. ...
- JavaScript实现使用 BACKTRACKING 方法查找集合的幂集算法
JavaScript实现使用 BACKTRACKING 方法查找集合的幂集算法(附完整源码) btPowerSet.js完整源代码 btPowerSet.test.js完整源代码 btPowerSet ...
- JavaScript实现使用 BITWISE 方法查找集合的幂集算法(附完整源码)
JavaScript实现使用 BITWISE 方法查找集合的幂集算法(附完整源码) bwPowerSet.js完整源代码 bwPowerSet.test.js完整源代码 bwPowerSet.js完整 ...
- List.removeIf():删除集合中满足给定条件的所有元素
今天偶然间发现了Collection在1.8新增了一个removeIf(Predicate<? super E> filter)方法,能够实现面试官们常问的:如何一边遍历,一边删除. 首先 ...
- excil mysql查询 条件_excel多条件查找 Excel中实现多条件查找的15种方法
excel多条件查找 Excel中实现多条件查找的15种方法,平凡的世界平凡的你,努力学习使我们变得不平凡,今天要介绍的知识是excel多条件查找的相关知识,你准备好学习excel多条件查找 Exce ...
- 【Groovy】集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )
文章目录 一.集合中有集合元素时调用 flatten 函数拉平集合元素 二.完整代码示例 一.集合中有集合元素时调用 flatten 函数拉平集合元素 在上一篇博客 [Groovy]集合遍历 ( 操作 ...
- 【Groovy】集合遍历 ( 调用集合的 any 函数判定集合中是否有指定匹配规则的元素 | 代码示例 )
文章目录 一.集合的 any 函数 二.集合的 any 函数代码示例 一.集合的 any 函数 集合的 any 函数 , 用于判断集合中是否有 满足闭包中的条件 的元素 , 返回一个布尔值 , tru ...
- 【Groovy】map 集合 ( map 集合操作符重载 | 使用 << 操作符添加一个元素 | 代码示例 )
文章目录 一.使用 " << " 操作符添加一个元素 二.代码示例 一.使用 " << " 操作符添加一个元素 对 map 集合 使用 ...
- 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
文章目录 I . Native 调用 Java 方法 II . JNIEnv *env 与 jobject instance III . JavaVM *vm IV . 局部引用 与 全局引用 分析 ...
最新文章
- 小A与欧拉路(牛客-树的直径)
- 每句话都可以品半辈子!!!
- 算法-- 删除排序链表中的重复元素(Java)
- C# WebService发布与调用方法(转)
- node 多进程 vs java_node多进程服务器
- 7 种 JVM 垃圾收集器,看完我跪了。。
- linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)
- 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)
- 11.4 iftop:动态显示网络接口流量信息
- Hibernate 事物隔离级别 深入探究
- 文案写作软件_11种可改善网站用户体验的文案写作技术
- django类视图简单使用和源码解析
- java 限流熔断_SpringCloud Alibaba微服务实战五 - 限流熔断
- 编译原理完整学习笔记(七):优化代码
- .NET System.Web.HttpContext.Current.Request报索引超出数组界限。
- 服务器状态 fadein,aria2-BT服务器地址的可用trackers列表(已接手)
- Geek 极客大挑战2021 web
- java.sql.SQLException: No database selected
- 以P2P网贷为例互联网金融产品如何利用大数据做风控?
- [人生故事] -- 花朵静悄悄地开放