Java 将HashMap键迭代器转换为列表迭代器
我需要访问HashMap关键元素,就像一个带有prev和curr指针的链表一样,以进行一些比较。我键入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<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;
}