当前位置: 首页 > 知识库问答 >
问题:

在if语句中格式化多个“or”条件的最佳方法

易修洁
2023-03-14
if (x == 12 || x == 16 || x == 19 || ...)
if x is [12, 16, 19]?
if (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11))

共有1个答案

韩志专
2023-03-14

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

// 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来提供良好的查找性能--即使是非常大的hash集也能够极其快速地执行contains()

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

if (Arrays.asList(12, 16, 19).contains(x))
 类似资料:
  • 问题内容: 一个简单的问题,但是Google并没有提供太多帮助。 我有一个带很多条件的if语句(必须检查10或15个常量以查看是否存在任何常量。) 而不是这样写: 有没有办法格式化它 只是想知道是否有更简单的方法来编写此代码,对您的帮助表示赞赏。 编辑 :答案非常有帮助,但是一些人要求我添加更多细节,所以我会这样做以缓解他们的好奇心。我正在创建一个日期验证类,该类需要确保在只有30天的月份中天数不

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

  • 我正在使用我的Symfony项目中的getter和setter。在更改其他字段之前,我必须使用语句检查状态字段是否没有特定的值。 代码: 我还使用运算符定义了常量。我在想有没有比这更优雅的解决方案。也许函数,但不知道它能用在这场比赛中吗?

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

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

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