基于逻辑表达式的集合运算
课题:基于逻辑表达式的集合运算
需求:
实际项目开发中,我们可能会有这样的需求,有A、B、C、D四个集合,需要对这四个集合进行一定的逻辑运算,从而得到经过该表达式运算之后的最终的集合情况。
实例:
1、假设现在有四个集合元素分别为:
A集合:20,50,60
B集合:70,80
C集合:90,100
D集合:30,70,80
2、运算表达式为:(A∪B)∩(C∪D)
3、我们想要的最终集合为:70,80.
A∪B = 20,50,60,70,80
C∪D = 90,100,70,80,30
(A∪B)∩(C∪D)= 70,80
步骤:
1、建立操作模型。
逻辑表达式的解析,一般思路就是依据运算符号(包括括号)优先级下坠,构建成树状结构。所以我们建立的模型如下:
LogicExpression{
LogicExpression left;//左分支
LogicExpression right;//右分支
Collection data;//数据集合
}
2、解析逻辑表达式,根据表达式初始化操作模型的树状结构。
3、根据集合索引,向树状结构的操作模型中各个节点分发数据集合。
4、根据树模型的中序遍历规则,将各个节点的左右俩分支的数据集合进行运算。
5、最后得到根节点的数据集合,即为所求。
源码:
测试:
结果:
总结:
godway
com.gaowei@msn.com
2012-07-04