我们有一个网页,用户可以在其中选择任意数量的规则来过滤和排序一组项目。他为每个规则设置一个优先级,用户可以使用该优先级定义应如何应用规则的顺序。
从这组规则中,我提取了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。因此,它们的顺序无关紧要