有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java树集comperator删除对象

我的系统中有n条规则。在提交请求时,我必须选择准确的一个,否则规则为“无”

<>所以我给每个规则增加了权重年龄,但是问题是如果没有匹配的请求(一个属性),就不需要考虑这个规则。(我对这条规则给出了最高分。)我怎样才能从我的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每个属性的方法权重年龄。我想基于这个calculateWt方法对TreeSet进行排序,但它不应该包括条目,即calculateWt > 100。用calculateWt排序的TreeSet不大于100


共 (1) 个答案

  1. # 1 楼答案

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

    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);
    }
    

    像这样的