删除树状图中带有条件的条目



我正在做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;
}
}

这是我到目前为止的代码。我不知道treemap是如何工作的,也不知道如何比较包含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}
}

相关内容

  • 没有找到相关文章

最新更新