【问题标题】:Remove entries with conditions in a treemap在树形图中删除带有条件的条目
【发布时间】:2021-10-31 15:48:55
【问题描述】:

我正在做 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 字符的值。我的代码有错误。你能帮忙的话,我会很高兴。谢谢!

【问题讨论】:

    标签: java loops dictionary treemap


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      相关资源
      最近更新 更多