我已经编写了一个代码,该代码需要一个整数数组,并且我无法找到一种方法来删除具有(假)值的树形图元素。 任何帮助,将不胜感激。 代码是。
import java.util.*;
public class Solution {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
int x=s.nextInt();
String[] str=new String[x];
for(int i=0;i<x;i++)
{
str[i]=s.next();
}
TreeMap<Character, Boolean> store=new TreeMap<Character, Boolean>();
for(int i=0;i<str[0].length();i++)
{
store.put(str[0].charAt(i), false);
}
for(int i=1;i<str.length;i++)
{
for(int j=0;j<str[i].length();j++)
{
if(store.containsKey(str[i].charAt(j)))
{
store.put(str[i].charAt(i), true);
}
}
//code for removing elements from treemap with false value.
}
}
}
答案 0 :(得分:1)
没有有效的方法来找到所有具有给定值的Map
条目并将其删除。为此,您必须遍历所有条目。
但是,您不必这样做。只需避免首先将它们放在Map
中。不要将带有String
值的第一个false
字符放在Map
中,而是将它们放在单独的Set
中:
Map<Character, Boolean> store = new TreeMap<>();
Set<Character> set = new TreeSet<>();
for(int i=0;i<str[0].length();i++)
{
set.add(str[0].charAt(i));
}
for(int i=1;i<str.length;i++)
{
for(int j=0;j<str[i].length();j++)
{
if(set.contains(str[i].charAt(j)))
{
store.put(str[i].charAt(i), true);
}
}
}
答案 1 :(得分:0)
如果您有一个TreeMap
,并且想要删除所有错误值,则可以使用Java 8中的lambda使用oneliner实现。
map.entrySet().removeIf(entry -> !entry.getValue()); // getValue() will return a boolean