检查列表中的所有项目是否都设置为相同的布尔值

时间:2019-04-08 18:36:30

标签: java arraylist

我有一个ArrayList,每次运行程序时,该列表中都会随机填充GameObj个实例。

如果某个对象与ArrayList中的另一个对象进行接触,则会将一个名为visible的布尔值从true设置为false

是否可以通过以下方法检查ArrayList中的所有项目实例是否都设置为false

XXXX.visible = false

一旦我可以检查它们是否都设置为false

3 个答案:

答案 0 :(得分:5)

您可以使用Stream.noneMatch()进行此操作:

if (bricks.stream().noneMatch(GameObj::isVisible)) {
    doStuffIfAllBricksAreInvisible();
}

如果所有砖块都不可见,则返回true。

另外,我建议看看Stream.allMatch(),如果列表中的所有元素都与给定谓词匹配,则返回true。

使用allMatch()看起来像这样:

if (bricks.stream().allMatch(b -> !b.isVisible())) {
    doStuffIfAllBricksAreInvisible();
}

要完成此操作,您还可以查看Stream.anyMatch(),如果其中一个元素与给定谓词匹配,则返回true。

答案 1 :(得分:1)

我建议使用anyMatch,因为列表为空时allMatch方法返回true

if (!bricks.stream().anyMatch(GameObj::isVisible)) {
    // TODO when visible balls not found (all are invisible)
}

答案 2 :(得分:0)

如果您使用的是Java <8,则一种方法是在初始化时将arraylist的大小存储在变量中(比如说变量名为count)。

将标志从true更改为false时,将计数减少1。如果flag已经为false,则不执行任何操作。现在,您只需检查计数是否为0。

如果count为0,则打印“做得好,游戏结束”,否则继续游戏。

对于Java 8或更高版本,您可以按照其他答案中的建议使用流API。