删除树图中具有条件的条目
Remove entries with conditions in a treemap
我正在做 Java 练习,问题要求我采用提供的 TreeMap,删除键是 keyFilter 的倍数且值包含 valueFilter 字符的条目,然后 returns 生成的 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}
}
我正在做 Java 练习,问题要求我采用提供的 TreeMap,删除键是 keyFilter 的倍数且值包含 valueFilter 字符的条目,然后 returns 生成的 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}
}