平时经常遇到要判断 i==-1||i==0的情况 有时候没准还是i==0||i==1||i==2||i==3 有没有什么写法可以写成 i==(0||1||2||3)类似这种把多种结果合在一起的写法?
0,1,2,3 :
code="java" == i[/code]
要判断是否为 n 个数之一 (i1, i2, ..., in) ,可以构造一个 1 元 n 次方程 :
code="java" * (i - i2) * ... * (i - in) == 0[/code]
展开式可能会短一些。
如果展开式没什么长进,还是位运算好:
code="java" | (i - i2) | ... | (i - in)) == 0[/code]
只是位运算有时还不如 i == i1 || i == i2 || ……
不介意用switch...case的话可以这样:
[code="java"]switch (i) {
case 1: case 2: case 3:
// ...
break;
default: // else
// ...
break;
}[/code]
或者对if情有独钟的话,可以这样:
[code="java"]int i = 2;
if (Arrays.asList(1, 2, 3).contains(i)) {
// ...
}[/code]
担心构造太多ArrayList对GC构成负担的话,预先构造一个出来缓存着就是。
只能这样写的,看了楼上的方程很有创意,但是若是比较String类型的呢?
[quote]若是比较String类型的呢?[/quote]
这个更好办,正则表达式 ……
[code="java"]java.util.regex.Pattern.matches(
"^one|two|three$", i);[/code]
用集合算或数组好了,有contains方法。