我有一个带有一些数值x = 5;
的变量。
我想要表达如下表达式:
if arr = [4,7,10]
在 mvel 中包含x
。
这是可能的,如果是的话,怎么样?
截至目前,我必须正确表达:
x == 4 || x == 7 || x == 10
但是因为我可能有一个大清单,所以可以这样做
x in [4,7,10,...]
代码:
for(Rule rule: ruleList)
{
String expresssion = rule.getConditionExpression();
boolean result = (Boolean) expressionHandler.execute(expresssion,ruleEvalData);
}
这里的表达式如下:
表达式='x == 4 || x == 7 || x == 10';
和ruleEvalData将包含x。
我想知道是否
在 MVEL中表达式='x在[4,7,10,...]中是否可以?
答案 0 :(得分:1)
使用java.util.stream.IntStream
类:
int[] array = {4, 7, 10};
boolean exist = IntStream.of(array).anyMatch(x -> x == 5);
如果此流true
的任何元素与提供的谓词of(array)
匹配,则会返回false
。
答案 1 :(得分:1)
另一个选择
Integer[] array = {4, 7, 10};
boolean exist = Arrays.asList(array).contains(5);
答案 2 :(得分:1)
您想使用MVEL contains
运算符。您可以使用literal List语法构造要测试的值列表。
[4,7,10] contains x
奇怪的是,我无法在MVEL的文档页面中找到contains
运算符的文档,但exists in the code并调用标准的Collection.contains()方法。