Java如何迭代Map <string,device =“”> </string,>

时间:2012-11-01 14:27:48

标签: java iterator

我有一个自定义Map,其中Device是我的类名为Device的实例。

devices = new HashMap<String, Device>();

我在StackOverflow上尝试了几个迭代器和for循环,但是所有这些似乎都会产生错误,我不知道为什么。

示例错误:

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:3)

看起来devices的声明不正确。它应该是:

Map<String, Device> devices;

不是原始(“已删除”)类型,Map。现代编译器应该为您提供使用原始类型的警告。记下编译器警告。

答案 1 :(得分:0)

你可以试试这个:

HashMap<String, Device> devices = new HashMap<String, Device>();

// do stuff to load devices

Device currentDevice;
for (String key : devices.keySet()) {

    currentDevice = devices.get(key);
    // do stuff with current device

}

答案 2 :(得分:0)

在第一个场景中,您只需提供

for(Map.Entry entry:devices.entrySet()){}

就足够了,你不需要在那里强制转换Map.Entry(String,Device)。在第二种情况下,当您从条目中获取值时,它将返回Object值,因此您需要转换为您的特定实例。所以您必须提供

设备设备=(设备)pairs.getValue()

答案 3 :(得分:0)

有三种方法可以迭代地图 1)使用For-Each循环迭代条目。 2)使用For-Each循环迭代键或值。 3)使用迭代器迭代。 (为此你可以使用Generics或没有Generics进行迭代)

    Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
    Map.Entry entry = (Map.Entry) entries.next();
    Integer key = (Integer)entry.getKey();
    Integer value = (Integer)entry.getValue();
    System.out.println("Key = " + key + ", Value = " + value);
}