我需要访问HashMap关键元素,就像使用prev和curr指针进行一些比较的链表一样.我将HashMap Key Iterator类型化为List Iterator来访问当前和以前的关键元素.下面是代码
HashMap<Node,Double> adj;
ListIterator<Node> li = (ListIterator<Node>) adj.keySet().iterator();
while (li.hasNext()) {
if (li.hasPrevious()) {
prev = li.previous();
} else {
prev = null;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下例外
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap$KeyIterator cannot be cast to java.util.ListIterator
at Types$AdjList.makeConnected(Types.java:357)
at Main.main(Main.java:89)
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以将HashMap Key Iterator强制转换为List Iterator来解决我的目的.任何帮助将不胜感激.
谢谢,
索姆纳特
Eug*_*sky 10
该iterator中adj.keySet()不能浇铸为ListIterator,因为它的按键设定(通过返回的keySet()方法)不是一个list,而是一个Set.因此它没有订单.
您可以尝试使用LinkedHashMap此目的,或创建一个新的List实例从keySet这样的
List<Node> nodes = new ArrayList<Node>(adj.keySet());
Run Code Online (Sandbox Code Playgroud)
然后执行所需的操作.