You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中判断值是否在一组值中的标准写法

兼容Java 8的解决方案

基础实现(非null场景)

如果能确定待测试值a不会为null,可以直接用Stream的短路匹配实现:

if (Stream.of(b, c, d).anyMatch(a::equals)) {
    // 匹配成功后的逻辑
}

兼容null的安全实现

如果需要处理a或目标值b/c/d为null的情况,使用Objects.equals避免空指针异常:

import java.util.Objects;
import java.util.stream.Stream;

// ...

if (Stream.of(b, c, d).anyMatch(x -> Objects.equals(a, x))) {
    // 匹配成功后的逻辑
}

备选方案(基于临时列表)

也可以通过临时列表实现,同样满足需求:

import java.util.Arrays;

// ...

if (Arrays.asList(b, c, d).contains(a)) {
    // 匹配成功后的逻辑
}

方案符合需求的说明

  1. 临时对象自动销毁:Stream.of()或Arrays.asList()创建的都是临时实例,if条件评估完成后会被垃圾回收,不会长期驻留内存
  2. 执行成本低:anyMatch是短路操作,找到第一个匹配项就停止遍历;contains内部也是短路查找,性能开销极小
  3. 待测试值仅执行一次:a只在代码中出现一次,避免了重复执行高成本或有副作用的表达式

为什么排除常量集合方案

正如你提到的,常量集合会提前初始化且长期存在,不符合“条件评估后立即销毁”的要求,因此不适用本场景。

内容的提问来源于stack exchange,提问作者Gouvernathor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:42:38