Data structures 复杂条件滤波器设计
我在后台的表单中实现了一些条件规则。基本上,我需要找到一种高效且可扩展的方法来实现这一点。我在研究二叉树和决策树,但仍然不确定实现这一点的最佳方法是什么Data structures 复杂条件滤波器设计,data-structures,binary-tree,decision-tree,conditional,Data Structures,Binary Tree,Decision Tree,Conditional,我在后台的表单中实现了一些条件规则。基本上,我需要找到一种高效且可扩展的方法来实现这一点。我在研究二叉树和决策树,但仍然不确定实现这一点的最佳方法是什么 如您所见,有一条语句可能包含多个条件,这些条件由逻辑AND/OR分隔。基本上我需要知道的是在数据库中存储这些信息的数据结构。当用户根据表单值提交表单时,它将作为一个过滤器。当表单通过过滤器时,将执行一些操作。您的问题有点笼统,但让我看看是否可以帮助您开始。在Java中,可以按如下方式设置类结构: interface ConditionTree
如您所见,有一条语句可能包含多个条件,这些条件由逻辑AND/OR分隔。基本上我需要知道的是在数据库中存储这些信息的数据结构。当用户根据表单值提交表单时,它将作为一个过滤器。当表单通过过滤器时,将执行一些操作。您的问题有点笼统,但让我看看是否可以帮助您开始。在Java中,可以按如下方式设置类结构:
interface ConditionTree {
boolean evaluate(...);
}
class OperatorNode implements ConditionTree {
List<ConditionTree> subTrees = ....;
@Override
boolean evaluate(...) {
if(operator == AND) {
//loop through and evaluate each sub tree and make sure they are all true,
//or return false
}
else if(operator == OR) {
//loop through and evaluate each sub tree, and make sure at least one is
//true, or return false
}
}
}
class LeafNode implements ConditionTree {
@Override
boolean evaluate(...) {
//get the LHS, operator, and RHS, and evaluate them
}
}
接口条件树{
布尔求值(…);
}
类OperatorNode实现条件树{
列表子树=。。。。;
@凌驾
布尔求值(…){
if(运算符==和){
//循环并评估每个子树,确保它们都是真实的,
//或者返回false
}
else if(运算符==或){
//循环遍历并评估每个子树,并确保至少有一个子树是可用的
//是,还是返回false
}
}
}
类LeafNode实现条件树{
@凌驾
布尔求值(…){
//获取LHS、操作员和RHS,并对其进行评估
}
}
请注意,这是一个N元树,而不是二叉树。谢谢您的解决方案。这是有道理的,但是我想知道如何将其存储在数据库中。整个过滤器应该存储在数据库中,在表单提交时,我们通过过滤器传递提交的数据。