Java - 通过HashMap替换ArrayList的迭代

min*_*ino 2 java arraylist hashmap map

以前我设置了一个ArrayList来包含记录对象.我已经用存储对象的HashMap替换了ArrayList,并使用个人的用户名字符串作为键.

这个目录的类实现了Iterable implements Iterable<Object>(只是一个问题,但为什么<Object>需要?).

用于迭代ArrayList的先前代码是:

    public Iterator iterator() {
        return records.iterator();
    }
Run Code Online (Sandbox Code Playgroud)

然后我使用此迭代器来处理该类中的所有对象,如下所示:

   for (Object o : directory) { 
            TelephoneRecords temp = (TelephoneRecords) o;
            System.out.println(temp.toString());
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,HashMapName.iterable(); 似乎引发了问题,那么我如何使用HashMap来解决这个问题呢?

Bhu*_*han 5

如果您只对键感兴趣,可以遍历地图的keySet():

Map<String, Object> map = ...;

for (String key : map.keySet()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果您只需要值,请使用values():

for (Object value : map.values()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

最后,如果您同时需要键和值,请使用entrySet():

for (Map.Entry<String, Object> entry : map.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

希望这对你有所帮助.