我们有一个网页,用户可以在其中选择任意数量的规则来过滤和排序一组项目。他为每个规则设置一个优先级,用户可以使用该优先级定义应如何应用规则的顺序。

从这组规则中,我提取了Comparator(如果规则正在排序)和/或Predicates(如果用户想要过滤项目)对象。我想将它们与项目流一起使用,以便对其进行过滤和排序。

我的问题是,应用Comparator和Predicate对象的顺序重要吗?我知道Comparator对象的顺序很重要,但是谓词出现在开头还是结尾有关系吗?

例如:

We have Comparator objects: comparator1, comparator2
We have Predicate objects: predicate1, predicate2

Is there a difference between applying them in the following orders:

- comparator1, comparator2, predicate1, predicate2
- predicate1, predicate2, comparator1, comparator2
- predicate1, comparator1, predicate2, comparator2
- predicate2, comparator1, comparator2, predicate1

Note: comparator1 always appears before comparator2. I am aware that changing their order could result in different results in terms of sorting.



现在,我认为以上所有情况都将导致相同的输出(就排序和项目而言)。这将允许我先应用所有过滤器,然后再进行排序。但是我不确定,所以我不得不在这里问。

最佳答案

如果谓词是无状态的,并且不修改它们测试的对象,则它们为selections in terms of relational algebra。因此,它们的顺序无关紧要

09-11 20:54