我需要访问 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;
}
...
}
但我得到以下异常
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)
有什么方法可以将 HashMap Key Iterator 类型转换为 List Iterator 来解决我的问题。任何帮助将不胜感激。
谢谢,
桑纳特
最佳答案
adj.keySet()
的iterator
无法转换为 ListIterator
,因为它的键集(由 keySet()
) 方法不是list
,而是Set
。因此它没有订单。
您可以尝试使用 LinkedHashMap
或像这样从 keySet
创建一个新的 List
实例
List<Node> nodes = new ArrayList<Node>(adj.keySet());
然后执行所需的操作。
关于java - 将 HashMap 键迭代器转换为列表迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857673/