如何高效判断Java中多个值是否都为空或都不为空?(为空.都不.多个.高效.判断...)
Java高效判断多个值是否都为空或都不为空
在日常Java开发中,经常需要判断多个变量是否都为空或都不为空。例如,表单验证需要确认所有必填字段是否已填写;数据处理需要检查多个关联数据是否都存在。本文提供两种高效的Java代码方案来解决这个问题,避免冗长的if-else语句。
问题核心: 优雅地判断多个值的状态是否一致(都为空或都不为空)。
方案一:使用Java Stream API
此方案利用mapToInt和sum方法。将输入对象数组转换为整数流,其中null值映射为0,非null值映射为1。然后,计算所有值的和。如果和为0(全部为空)或等于数组长度(全部不为空),则返回true,否则返回false。
import java.util.Arrays; public class AllNullOrNotNull { public static void main(String[] args) { System.out.println(allSameNullState("", "", "")); // true System.out.println(allSameNullState(null, null)); // true System.out.println(allSameNullState("", "", null)); // false } static boolean allSameNullState(Object... objs) { int count = Arrays.stream(objs).mapToInt(it -> (it == null ? 0 : 1)).sum(); return count == 0 || count == objs.length; } }
方案二:更注重效率的方案
此方案先判断数组长度是否小于等于1,如果是,则直接返回true。否则,获取第一个元素的空状态,然后使用allMatch方法检查所有元素的空状态是否与第一个元素一致。此方法避免了对整个数组的遍历求和,在数据量较大时可能性能更好。
static boolean allSameNullStateEfficient(Object... objs) { if (objs.length <= 1) return true; boolean firstState = objs[0] == null; return Arrays.stream(objs).allMatch(it -> (it == null) == firstState); }
总结:
两种方法各有优劣,选择取决于具体场景和性能要求。方案一代码简洁,方案二在数据量大时可能效率更高。 选择适合您项目需求的方案即可。
以上就是如何高效判断Java中多个值是否都为空或都不为空?的详细内容,更多请关注知识资源分享宝库其它相关文章!