0

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

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

我尝试了 StackOverflow 建议的几个迭代器和 for 循环,但它们似乎都产生错误,我不知道为什么。

示例错误:

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

3

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

Map<String, Device> devices;

不是原始(“已擦除”)类型,Map. 现代编译器应该给你使用原始类型的警告。注意编译器警告。

于 2012-11-01T14:33:59.430 回答
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

}
于 2012-11-01T14:32:19.853 回答
0

在第一种情况下,您只需给

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

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

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

于 2012-11-01T14:38:45.030 回答
0

有 3 种方法可以迭代地图 1) 使用 For-Each 循环迭代条目。2) 使用 For-Each 循环遍历键或值。3) 使用迭代器进行迭代。(为此,您可以使用泛型或不使用泛型进行迭代)

    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);
}
于 2012-11-01T14:42:16.387 回答