我有一个自定义Map,其中Device是我的类名为Device的实例。
devices = new HashMap<String, Device>();
我在StackOverflow上尝试了几个迭代器和for循环,但是所有这些似乎都会产生错误,我不知道为什么。
示例错误:
和
答案 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);
}