[英]Using Logical OR without repeating the variable in the condition in java
有没有一种方法可以在Java中使用OR而不在条件中重复变量:
例如
if(x != 5 || x != 10 || x != 15)
而是使用类似
if x not in [5,10,15]
您可以利用Java8流中的短路端子操作 (有关详细信息,请参见“流程序包描述”中的 “ 流操作”部分 。)例如:
int x = 2;
// OR operator
boolean bool1 = Stream.of(5, 10, 15).anyMatch(i -> i == x);
System.out.println("Bool1: " +bool1);
// AND operator
boolean bool2 = Stream.of(5, 10, 15).allMatch(i -> i != x);
System.out.println("Bool2: " +bool2);
它产生以下输出:
Bool1: false
Bool2: true
您的第二个示例只是将元素存储在数组中并检查是否存在,在这种情况下不需要OR。
如果要走那条路线,请将元素存储在List<Integer>
并使用contains(Object o)
if(!myList.contains(x))
如果要排除所有5的乘法,可以尝试一下
if(x % 5 != 0)
这里的解决方案比使用Streams或HashMap的解决方案具有更少的性能开销:
将要检查的值存储在数组中,并编写一个小函数以检查x
是否在这些值中
private static boolean isNotIn(int x, int[] values) {
for (int i : values) {
if (i == x) {
return false;
}
}
return true;
}
if (isNotIn(x, new int[] {5, 10, 15})) {
...
}
与原始代码相比,开销很小,如果可以将数组作为常量拉出,则开销可以忽略不计。 我还发现阅读起来比其他解决方案更好,但这是一个非常主观的观点;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.