当前位置: 首页 > 面试题库 >

在if语句中格式化多个“或”条件的最佳方法(Java)

翟英达
2023-03-14
问题内容

一个简单的问题,但是Google并没有提供太多帮助。

我有一个带很多条件的if语句(必须检查10或15个常量以查看是否存在任何常量。)

而不是这样写:

if (x == 12 || x == 16 || x == 19 || ...)

有没有办法格式化它

if x is [12, 16, 19]?

只是想知道是否有更简单的方法来编写此代码,对您的帮助表示赞赏。

编辑
:答案非常有帮助,但是一些人要求我添加更多细节,所以我会这样做以缓解他们的好奇心。我正在创建一个日期验证类,该类需要确保在只有30天的月份中天数不超过30天(我认为其中有4天),并且我正在编写if语句来检查如下内容:

if (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11))

我只是想知道是否有一种更快的html" target="_blank">方法来编码类似的东西-下面的许多答案对您有帮助:)。


问题答案:

我经常使用这种模式。它非常紧凑:

// Define a constant in your class. Use a HashSet for performance
private static final Set<Integer> values = new HashSet<Integer>(Arrays.asList(12, 16, 19));

// In your method:
if (values.contains(x)) {
    ...
}

HashSet此处使用A 可以提供良好的查找性能-甚至非常大的哈希集也能够contains()极快地执行。

如果性能不重要,则可以将其要点编码为一行:

if (Arrays.asList(12, 16, 19).contains(x))

但要知道它ArrayList每次执行都会创建一个新的。



 类似资料:
  • 我有一个if语句,里面有很多条件,但是条件是完全不同的。看起来真的很笨重。我不确定是否有办法做这件事。

  • 问题内容: 我试图获得一个if语句从多个条件中触发,而不用不同的触发器多次重写该语句。例如: 您如何将这些内容浓缩成一个陈述? 我试过使用“或”,并且无论输入是否符合任何条件,它都会导致任何raw_input触发语句。 问题答案: 你想做的是 如果您有很多可能性,请选择另一个选项: 由于您使用的是2.7,因此您也可以这样编写(在2.7或3+版本中有效,但在2.6或以下版本中无效): 这使元素成为您

  • 问题内容: 我有一个变量。 我想呼应,如果等于任何下列值,,,,或。有没有办法通过像?? 这样的单个语句来做到这一点? 问题答案: 我认为,使用“ Or”代替“ And”会有所帮助

  • 问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄

  • 问题内容: 可以说我有这个: 现在。如果bool1被评估为false,那么Java是否足够聪明来跳过检查bool2和bool2?Java甚至从左到右检查它们吗?我之所以这样问,是因为我在整理条件时将其内部条件“分类”(从左侧最便宜的条件开始)。现在我不确定这是否会给我带来任何性能上的好处,因为我不知道Java如何处理这个问题。 问题答案: 是的,Java(类似于其他主流语言)使用 惰性评估 短路,