1

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

4

4 回答 4

3

No.

Unless you have some additional structure that keeps track of the values in the list in some way (for example by tracking each addition/removal and making sure that the boolean field can't change after addition) there is no way to check for this without iteration.

Iteration can be "hidden" via recursion or inside another method, but that doesn't change anything in a significant way.

于 2012-05-22T13:01:56.923 回答
1

JDK 不支持这一点,因为没有适当的闭包,语法非常复杂。有一个库可以在简洁的语法和可用性之间取得平衡:LambdaJ。实现这一目标所涉及的黑客本身就是一个了不起的故事。

于 2012-05-22T13:47:32.783 回答
0

Java中没有这样的东西。

然而,Guava 使用Predicate 和 Collections2.filter()提供了这种东西。但这不是单线的事情。

于 2012-05-22T13:04:41.943 回答
0

有点儿...

您正在寻找类似 LINQ for Java 的东西,因此您可以执行类似的操作
collection.any(x => x.bool)

以下是一些库:
LINQ 的 Java 等价物是什么?

如果您查看它们,您应该会发现一些简写函数来执行此操作,但它们都以某种方式遍历集合(只是隐藏在函数下方)。

于 2012-05-22T13:05:17.510 回答