读书人

基于逻辑表达式的会合运算

发布时间: 2012-07-28 12:25:13 作者: rapoo

基于逻辑表达式的集合运算

课题:基于逻辑表达式的集合运算

需求:

实际项目开发中,我们可能会有这样的需求,有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

读书人网 >编程

热点推荐