我有一个对象的ArrayList。这些对象都是同一个类,并包含一个布尔数据类型的公共字段。是否有可能确定arraylist中是否存在此字段设置为true的任何实例,而无需迭代整个数组并检查每个字段?只是想知道是否有迭代循环的简写版本。谢谢。
答案 0 :(得分:3)
没有
除非你有一些额外的结构以某种方式跟踪列表中的值(例如通过跟踪每个添加/删除并确保添加后布尔字段不能更改),否则无法检查为此没有迭代。
迭代可以通过递归或其他方法“隐藏”,但不会以显着的方式改变任何内容。
答案 1 :(得分:1)
在JDK中没有对此的支持,因为如果没有适当的闭包,语法就会非常复杂。有一个库可以在简洁的语法和可用性之间取得平衡:LambdaJ。实现这一目标所涉及的黑客是一个令人惊叹的故事。
答案 2 :(得分:0)
Java中没有这样的东西。
然而,Guava使用Predicate and Collections2.filter()提供此类内容。但这不是一个单行的事情。
答案 3 :(得分:0)
有点......
你正在寻找像LINQ for Java这样的东西,所以你可以做类似的事情
collection.any(x => x.bool)
以下是一些图书馆:
What is the Java equivalent for LINQ?
如果你浏览它们,你应该找到一些简短的函数来做到这一点,但是所有这些函数都以某种方式遍历集合(只是隐藏在函数下面)。