12.MVEL脚本语法--投影与交集
来源:互联网 发布:python opencv clone 编辑:程序博客网 时间:2024/06/15 20:21
投影
投影是描述集合的方法之一,通过简单的语法你可以检索到集合中非常复杂的对象模型。
语法:in 比如:(foo in list)(对象属性 in 对象集合)
示例:
User u1 = new User("张三" );
User u2 = new User("李四" );
User u3 = new User("王二" );
List<User> l = new ArrayList<User>();
l.add(u1);
l.add(u2);
l.add(u3);
Map vars = new HashMap();
vars.put("users",l);
String expression = "foo=(name in users);foo";
Object obj = MVEL. eval(expression,vars );
System. out.println(obj);
复杂示例:
public class User {
private String name ;
private Integer age ;
private Parent parent ;
public User(Parent parent) {
this.parent = parent;
}
}
User u1 = new User( new Parent("老大" ));
User u2 = new User(new Parent("老二" ));
User u3 = new User(new Parent("老三" ));
List<User> l = new ArrayList<User>();
l.add(u1);
l.add(u2);
l.add(u3);
Map vars = new HashMap();
vars.put( "users", l);
String expression = "foo=(parent.name in users);foo" ;
Object obj = MVEL. eval(expression, vars );
System. out .println(obj);
投影可以支持嵌套投影,上面的脚本可以写成下面的形式:
foo=(name in (parent in users))
交集
我们可以根据投影这周方式获取交集,比如有一个User对象包含一个集合成员familyMembers,我们可以获取一个家庭成员姓名的集合:
familyMembers =(name in (familyMember in users))过滤投影
MVEL提供通过if运算符构造的过滤条件来过滤投影,比如获取user集合中name 包含‘张’的用户,就可以使用过滤。
如下面的例子:
User u1 = new User("张依依" );
User u2 = new User("张尔尔" );
User u3 = new User("老三" );
List<User> l = new ArrayList<User>();
l.add(u1);
l.add(u2);
l.add(u3);
Map vars = new HashMap();
vars.put("users", l);
String expression = "($ in users if $.name contains '张')" ;
Object obj = MVEL. eval(expression, vars );
System. out.println(obj);
其他的例子:
(($ < 10) in [2,4,8,16,32]); // returns [true, true, true, false, false]
($ in [2,4,8,16,32] if $ < 10); // returns [2,4,8]
($ in [2,4,8,16,32] if $ < 10); // returns [2,4,8]
0 0
- 12.MVEL脚本语法--投影与交集
- 10.MVEL脚本语法--数据类型
- 13.MVEL脚本语法--函数
- 11.MVEL脚本语法--控制流程
- mvel语法指南
- 投影交集overlapping仿真
- 02.MVEL基本语法-属性表达式
- 03.MVEL基本语法-布尔表达式
- 04.MVEL基本语法--复合表达式
- 透视投影与正交投影
- 差集与交集
- MVEL-简介
- Mvel使用指南
- MVEL-简介
- 高斯-克吕格投影与UTM投影
- css单边投影与双侧投影
- 脚本语法
- 地理坐标与投影
- TCP三次握手机制
- Linux 设备模型(中)之上层容器
- 11.MVEL脚本语法--控制流程
- Spring MVC 教程,快速入门,深入分析
- Java的集合整理
- 12.MVEL脚本语法--投影与交集
- 13.MVEL脚本语法--函数
- synchronized关键字详解
- PHP MongoDB扩展安装(最简洁明了的说明)
- “好程序员笔记”关于对象的比较以及一个二叉树的实现
- POJ-3186-DP
- hdu 2795
- 黑马程序员——进制转换、原码、反码、补码
- 15.MVEL shell的用法