删除树图中有条件的条目

HY2000

我正在做 Java 练习,问题要求我使用提供的 TreeMap,删除键是 keyFilter 倍数且值包含 valueFilter 字符的条目,然后返回生成的 TreeMap。如果应用键和值过滤器不会删除任何条目,则必须返回提供的映射。

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class MapFilter {
    public static TreeMap<Integer, String> filterTreeMap(
            TreeMap<Integer, String> map, int keyFilter, char valueFilter) {
        
        TreeMap<Integer, String> finalMap = new TreeMap<Integer, String>();
        
        for(Map.Entry<Integer, String> e: finalMap.entrySet()){
            if(getKey() % keyFilter == 0 && getValue().equals(valueFilter){
                map.remove(getKey());
            }
        }
        return finalMap;
    }
}

这是我到目前为止的代码。我没有了解树状图的工作原理以及如何比较包含 valueFilter 字符的值。我的代码有错误。你能帮忙的话,我会很高兴。谢谢!

皮尔波

这样就可以了,解释在代码中:

public static TreeMap<Integer, String> filterTreeMap(TreeMap<Integer, String> map, int keyFilter, char valueFilter) {
    // <--- your finalMap was always empty, you have to fill values in it
    // so initialize it with your parameter map
    TreeMap<Integer, String> finalMap = new TreeMap<Integer, String>(map); 

    for(Map.Entry<Integer, String> e: map.entrySet()){
        if(e.getKey() % keyFilter == 0 && e.getValue().indexOf(valueFilter) >= 0){ 
            // <--- to test if a string contains a char, use index of
            finalMap.remove(e.getKey());
        }
    }
    return finalMap;
}

public static void main(String[] args) {
    TreeMap<Integer, String> map = new TreeMap<>();
    map.put(1, "abcdef");
    map.put(2, "fghijk");
    map.put(4, "fghijk");
    map.put(3, "lmnop");

    System.out.println(filterTreeMap(map, 2, 'f')); // output: {1=abcdef, 3=lmnop}
    System.out.println(filterTreeMap(map, 3, 'a')); // output: {1=abcdef, 2=fghijk, 3=lmnop, 4=fghijk}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章