Java 遍历映射

Java 遍历映射,java,iterator,Java,Iterator,我试图遍历一个映射并删除某些元素来构造一个受控词汇表。这是我的密码: public static Map<String, Integer> controlVocab(Map<String, Integer> docf){ Set<String> set = docf.keySet(); Iterator<String> itr = set.iterator(); for (Map.Entry <String,

我试图遍历一个映射并删除某些元素来构造一个受控词汇表。这是我的密码:

    public static Map<String, Integer> controlVocab(Map<String, Integer> docf){
    Set<String> set = docf.keySet();
    Iterator<String> itr = set.iterator();
    for (Map.Entry <String, Integer> entry : docf.entrySet())
    {
        if(entry.getValue()<50){
            docf.remove(entry.getKey());
        }
    }
    return docf;
}
publicstaticmap-controlVocab(Map-docf){
Set Set=docf.keySet();
迭代器itr=set.Iterator();
对于(Map.Entry:docf.entrySet())
{

如果(entry.getValue()是,这是有意义的:因为通常不允许一个线程在另一个线程迭代集合时修改集合

也许最好的方法是在一个新列表中收集要删除的元素,然后在该列表上迭代删除原始映射中相应的条目

试试这样:

List<String> mylist = new ArrayList<String>();
for (Map.Entry <String, Integer> entry : docf.entrySet()){
        if(entry.getValue()<50){
            mylist.add(entry.getKey());
        }
}

for (String key : mylist){
        docf.remove(key);
}
List mylist=new ArrayList();
对于(Map.Entry:docf.entrySet()){
if(entry.getValue()