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

Java 使用迭代器将所有键设置为具有相同的值,java,hashmap,iterator,Java,Hashmap,Iterator,我创建了一个hashmap来表示一个图。哈希映射中的关键点是顶点,值是边。从hashmap中,我获取它的所有顶点,并将它们存储在一个名为vertexDictionary的字典中。我现在想将顶点字典的所有值都设置为False,但我在这方面遇到了问题。我试图使用迭代器,但我的代码中有一个带星号的错误。我的代码如下: public void clearMarks(){ // Sets marks for all vertices to false. Set set = graph.entrySet

我创建了一个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);*
  }
}
getKey()方法返回对象。问题是你没有投。假设您的键是整数,那么您应该将代码更改为:

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

您有一个
vertexDictionay
,其中包含您感兴趣的所有顶点,并且对于每个顶点,您都希望将它们设置为
False

所以我假设您有一些数据结构,比如
Map vertexctionay

你应该能够

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

正如前面所讨论的,foreach循环在引擎盖下使用迭代器。这修复了您的参数不匹配错误,更具可读性。IMHO

错误消息说明了什么?是否使用泛型声明了
graph
(例如
Map-graph;
)?如果是这样,则该行将不会编译,因为您使用的是原始类型。