在TreeMap中查找某个值并保存

Look for a ceratin value in TreeMap and save it

我在保存一些我想在 TreeMap 中查找的信息时遇到问题。那个 TreeMap (tm) 有一个字符串作为键和一个 TreeSet(无关紧要的对象)作为值。我想找到某个键​​,然后将 TreeSet 存储在一个变量中,以便稍后对其进行操作。我该怎么做?

它弹出一个错误说 "Type mismatch: cannot convert from Object to TreeSet"

就像忽略等号的情况一样。

import java.util.*;

class ArbolS extends Arbol{
   private TreeMap<String, TreeSet<PLoc>> tm;

  public ArbolS(){
    tm = new TreeMap<String, TreeSet<PLoc>>();
  }

  public boolean Insert(PLoc p){
    boolean found = false;
    Set it = tm.entrySet();
    Iterator iterator = it.iterator();
    Map.Entry mentry;
    TreeSet<PLoc> aux;

    while(iterator.hasNext() || found){
      mentry = (Map.Entry)iterator.next();
      if(mentry.getKey().equalsIgnoreCase(p.getPais())){
        found = true;
        aux = mentry.getValue(); //Error here
      }
    }
  }
}

您应该将所有原始类型替换为参数化类型:

public boolean Insert(PLoc p){
    boolean found = false;
    Iterator<Map.Entry<String, TreeSet<PLoc>>> iterator = tm.entrySet().iterator();
    TreeSet<PLoc> aux;
    while (iterator.hasNext() && !found) {
        Map.Entry<String, TreeSet<PLoc>> mentry = iterator.next();
        if(mentry.getKey().equalsIgnoreCase(p.getPais())) {
            found = true;
            aux = mentry.getValue();
        }
    }
}

请注意,我还将条件 || found 更改为 && !found。如果 iterator.hasNext() returns false,你不能留在循环中,而且你似乎想在找到第一个匹配项后退出循环。