使用迭代器将所有键设置为具有相同的值

时间:2017-02-06 01:57:53

标签: java hashmap iterator

我创建了一个代表图表的hashmap。哈希映射中的键是顶点,值是边。从我的hashmap中取出它的所有顶点并将它们存储在名为vertexDictionary的字典中。我现在想将顶点字典的所有值设置为False,但是我遇到了麻烦。我试图使用迭代器,但我的代码中出现了带有星号的错误。我的代码如下:

public void clearMarks(){
// Sets marks for all vertices to false.
  Set set = graph.entrySet();
  Iterator i = set.iterator();

  while(i.hasNext()) {
    Map.Entry g = (Map.Entry)i.next();
    *this.graph.put(g.getKey(), false);*
  }
}

2 个答案:

答案 0 :(得分:0)

getKey()方法返回Object。问题是你没有施展它。假设您的密钥是整数,那么您应该将代码更改为:

this.graph.put((int) g.getKey(), false);

答案 1 :(得分:0)

您有一个vertexDictionay,其中包含您感兴趣的所有顶点,以及您希望将它们设置为False的每个顶点。

所以我假设您有一些数据结构,如Map<Integer, Boolean> vertexDictionay;

你应该能够

    for (Map.Entry vertex : vertexDictionay.entrySet()) {
        vertex.setValue(false);
    }

foreach循环在引擎盖下使用了一个迭代器,如here所述。这修复了你的参数不匹配错误,并且更具可读性恕我直言