Java 将HashMap键迭代器转换为列表迭代器

Java 将HashMap键迭代器转换为列表迭代器,java,collections,Java,Collections,我需要访问HashMap关键元素,就像一个带有prev和curr指针的链表一样,以进行一些比较。我键入HashMap键迭代器以列出迭代器以访问当前和以前的键元素。下面是代码 HashMap<Node,Double> adj; ListIterator<Node> li = (ListIterator<Node>) adj.keySet().iterator(); while (li.hasNext()) { if (li.hasPrevious())

我需要访问HashMap关键元素,就像一个带有prev和curr指针的链表一样,以进行一些比较。我键入HashMap键迭代器以列出迭代器以访问当前和以前的键元素。下面是代码

HashMap<Node,Double> adj;
ListIterator<Node> li = (ListIterator<Node>) adj.keySet().iterator();

while (li.hasNext()) {
    if (li.hasPrevious()) {
                prev = li.previous();
    } else {
                prev = null;
    }
...
}
是否有某种方法可以将HashMap键迭代器类型转换为List迭代器来解决我的问题。任何帮助都将不胜感激

谢谢


Somnath

无法将
adj.keySet()
迭代器
强制转换为
列表迭代器
,因为它的键集(
keySet()
方法返回的不是
列表
,而是
。因此它没有订单

为此,您可以尝试使用
LinkedHashMap
,或者从
键集创建一个新的
列表
实例,如下所示

List<Node> nodes = new ArrayList<Node>(adj.keySet());
List nodes=newarraylist(adj.keySet());
然后执行所需的操作。

试试这个

HashMap<Node,Double> adj;
Iterator<Node> li = (Iterator<Node>) adj.keySet().iterator();

while (li.hasNext()) {
    if (li.hasPrevious()) {
                prev = li.previous();
    } else {
                prev = null;
    }
...
}
HashMap;
迭代器li=(迭代器)adj.keySet().Iterator();
while(li.hasNext()){
if(li.hasPrevious()){
prev=li.previous();
}否则{
prev=null;
}
...
}
公共HashMap JsonToMap(JSONObject js,HashMap hm){
@抑制警告(“未选中”)
迭代器nameItr=js.keySet().Iterator();
while(nameItr.hasNext()){
String name=nameItr.next();
hm.put(name,js.get(name.toString());
}
返回hm;
}
HashMap<Node,Double> adj;
Iterator<Node> li = (Iterator<Node>) adj.keySet().iterator();

while (li.hasNext()) {
    if (li.hasPrevious()) {
                prev = li.previous();
    } else {
                prev = null;
    }
...
}
    public HashMap JsonToMap(JSONObject js,HashMap hm){
         @SuppressWarnings("unchecked")
         Iterator<String> nameItr =  js.keySet().iterator();
         while(nameItr.hasNext()) {
             String name = nameItr.next();
             hm.put(name, js.get(name).toString());
         }
        return hm;
    }