一个简单的问题,但是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))
我只是想知道是否有一种更快的方法来编码类似的东西-下面的许多答案对您有帮助:)。
我经常使用这种模式。它非常紧凑:
// 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()极快地执行。
HashSet
contains()
如果性能不重要,则可以将其要点编码为一行:
if (Arrays.asList(12, 16, 19).contains(x))
但要知道它ArrayList每次执行都会创建一个新的。
ArrayList