Java:在没有迭代的情况下检查ArrayList中对象的公共字段的值

时间:2012-05-22 12:59:17

标签: java arraylist

我有一个对象的ArrayList。这些对象都是同一个类,并包含一个布尔数据类型的公共字段。是否有可能确定arraylist中是否存在此字段设置为true的任何实例,而无需迭代整个数组并检查每个字段?只是想知道是否有迭代循环的简写版本。谢谢。

4 个答案:

答案 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?

如果你浏览它们,你应该找到一些简短的函数来做到这一点,但是所有这些函数都以某种方式遍历集合(只是隐藏在函数下面)。