在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
,你不能留在循环中,而且你似乎想在找到第一个匹配项后退出循环。
我在保存一些我想在 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
,你不能留在循环中,而且你似乎想在找到第一个匹配项后退出循环。