Java中树映射的迭代器返回错误

Java中树映射的迭代器返回错误,java,map,iterator,treemap,sortedmap,Java,Map,Iterator,Treemap,Sortedmap,我有一个树形图,定义如下: final TreeMap<ArrayList<String>,String> mymap = new TreeMap<ArrayList<String>,String>(comparator); 我收到的错误消息如下第2行的类型objPointMap.Iterator的方法hasNext()未定义,这一行有多个标记 -条目是原始类型。对泛型类型映射的引用。条目应为 第三行参数化的 此错误的来源是什么?如何修复它?可能

我有一个树形图,定义如下:

final TreeMap<ArrayList<String>,String> mymap = new TreeMap<ArrayList<String>,String>(comparator);
我收到的错误消息如下第2行的类型objPointMap.Iterator的方法hasNext()未定义,这一行有多个标记 -条目是原始类型。对泛型类型映射的引用。条目应为 第三行参数化的


此错误的来源是什么?如何修复它?

可能您导入了错误的
迭代器类?您确定已经从另一个名为
Iterator
的包中导入了
java.util.Iterator
,并且没有其他类吗

如果导入了正确的
迭代器
类,则可以删除类型转换并将泛型类型添加到迭代器:

Iterator<Map.Entry<ArrayList<String>, String>> iter = mymap.entrySet().iterator()
迭代器iter=mymap.entrySet().Iterator()
试试看

迭代器iter=mymap.entrySet().Iterator(); while(iter.hasNext()){ Entry=iter.next(); }
您可以使用for-each循环遍历映射:

for(Map.Entry<List<String>,String> entry : mymap.entrySet()) {
    List<String> key = entry.getKey();
    String value = entry.getValue();

    // Do something useful with the key and value
}
for(Map.Entry:mymap.entrySet()){
List key=entry.getKey();
字符串值=entry.getValue();
//使用键和值做一些有用的事情
}

或者,您可以使用
mymap.keySet()
或值
mymap.calues()

循环键,您知道一旦添加了键,就不能更改它,它的具体类型应该无关紧要(或者可以理想地使用)

final Map mymap=new TreeMap(比较器);
对于(Map.Entry:mymap.entrySet()){
}

你不认为树状图会更好吗?作为键1的字符串。我无法用您发布的代码重现错误2。在任何地方使用泛型都是很好的做法:
Iterator iter=mymap.entrySet().Iterator()3。执行2可能有助于您理解错误是什么。@Deepak,是的,我知道这看起来很奇怪,但我需要执行此操作以拥有一个自定义比较器函数。@assylias,当我执行2时,我会收到一条错误消息,如类型ObjToIntMap。迭代器不是泛型的;不能使用参数对其进行参数化。@Cupidvogel这意味着您使用了错误的迭代器类。看看我的答案。是的,是的,不知道从哪里导入了另一个
迭代器
类!非常感谢!另一个问题是,当我试图通过
entry.getKey().get(0)
访问key arraylist中的第一个元素时,我收到错误消息,类型对象的get(int)方法未定义。我怎么修理它?
    Iterator<Entry<ArrayList<String>, String>> iter = mymap.entrySet().iterator();
    while(iter.hasNext()) {
        Entry<ArrayList<String>, String> entry = iter.next();
    }
for(Map.Entry<List<String>,String> entry : mymap.entrySet()) {
    List<String> key = entry.getKey();
    String value = entry.getValue();

    // Do something useful with the key and value
}
final Map<List<String>,String> mymap = new TreeMap<>(comparator);
for (Map.Entry<List<String>, String> entry : mymap.entrySet()) {

}