Ant*_*ony 43 java syntax if-statement
一个简单的问题,但谷歌没有多少帮助.
我有一个带有许多条件的if语句(必须检查10或15个常量,看它们是否存在.)
而不是写如下:
if (x == 12 || x == 16 || x == 19 || ...)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以格式化它
if x is [12, 16, 19]?
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有更简单的方法来编码,任何帮助赞赏.
编辑:答案非常有用,但我被要求添加更多细节,所以我会这样做以满足他们的好奇心.我正在制作一个日期验证课程,需要确保在仅有30天的时间里天数不超过30天(其中有4天,我认为)并且我正在写一个if语句来检查这样的事情:
if (day > 30 && (month == 4 || month == 6 || month == 9 || month == 11))
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有更快的方法来编写类似的东西 - 下面的许多答案都有帮助:).
Boh*_*ian 49
我经常使用这种模式.它非常紧凑:
// 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)) {
...
}
Run Code Online (Sandbox Code Playgroud)
HashSet
这里使用A 来提供良好的查找性能 - 即使非常大的哈希集也能够contains()
非常快速地执行.
如果性能不重要,您可以将其要点编码为一行:
if (Arrays.asList(12, 16, 19).contains(x))
Run Code Online (Sandbox Code Playgroud)
但要知道ArrayList
每次执行它都会创建一个新的.
Mar*_*ace 10
你想切换到这个??
switch(x) {
case 12:
case 16:
case 19:
//Do something
break;
default:
//Do nothing or something else..
break;
}
Run Code Online (Sandbox Code Playgroud)