Java中如何检查KeyBox对象的boolean数组元素是否为false?
问题分析
你的代码存在两处关键错误:
Arrays.asList(box.cells)处理基本类型数组boolean[]时,不会将数组拆分为单个boolean元素,而是把整个数组作为List的唯一元素。后续stream操作的是boolean[]对象,而非数组内的boolean值。findAny().equals("false")逻辑错误:一是将Optional对象与字符串"false"比较,类型不匹配;二是就算拿到boolean值,也应该直接和boolean类型的false比较,而非字符串。
正确实现方案
根据你“默认数组元素都是false,期望输出true”的需求,分两种场景给出实现:
场景1:检查数组中是否存在至少一个false元素
import java.util.Arrays; public class PutKey { public static void put(KeyBox box) { boolean hasFalse = Arrays.stream(box.cells).anyMatch(b -> b == false); System.out.println(hasFalse); } }
场景2:检查数组中所有元素都是false
import java.util.Arrays; public class PutKey { public static void put(KeyBox box) { boolean allFalse = Arrays.stream(box.cells).allMatch(b -> b == false); System.out.println(allFalse); } }
补充说明
- 使用
Arrays.stream(box.cells)可直接将基本类型数组转换为BooleanStream,避免Arrays.asList处理基本类型数组的陷阱,同时处理效率更高。 - 由于boolean数组默认值为false,上述两种实现都会输出
true,符合你的预期。
内容的提问来源于stack exchange,提问作者potapov.alexey
相关产品推荐
相关产品推荐

