Treeset comperator删除对象

时间:2015-08-30 13:15:57

标签: java treeset

我的系统中有很多规则。在提交请求时,我必须选择一个请求或将规则选为无。

所以我已经为每条规则添加了权重年龄,但问题是如果请求没有匹配(一个属性),则不需要考虑该规则。 (我已经为该规则提供了最高分。)如何从我的TreeSet中删除它?

目前这是我的比较方法:

private Flow selectExact(final FlowSelector flowSelector) {
    TreeSet<Flow> sortedFlows = new TreeSet<Flow>(new Comparator<Flow>() {
        @Override
        public int compare(Flow o1, Flow o2)
        {
            return o1.calculateWt(flowSelector) - o2.calculateWt(flowSelector);
        }
    }
);
每个属性的

calculateWt方法权重年龄。我想根据此TreeSet方法对calculateWt进行排序,但不应包含条目,即calculateWt > 100。使用TreeSet排序的calculateWt不大于100。

1 个答案:

答案 0 :(得分:0)

也许我没有正确理解这个问题,但通常我们需要比较器来对树中的值进行排序。如果要删除树中的某些条目 - 请在外部代码中手动删除它。

Set myTree = new TreeSet(); 
// add some values here
// then compare new, second rule weight with others,
// maybe you need to do it in a loop 
if (compare(first, second) > 100) {
    myTree.remove(second);
}

像这样。