Java HashMap:如何按索引获取键和值?

2022-08-31 19:41:34

我正在尝试使用HashMap将唯一字符串映射到字符串ArrayList,如下所示:

HashMap<String, ArrayList<String>>

基本上,我希望能够通过数字访问密钥,而不是通过使用密钥的名称。我希望能够访问所述密钥的值,以迭代它。我正在想象这样的事情:

for(all keys in my hashmap) {
    for(int i=0; i < myhashmap.currentKey.getValue.size(); i++) {
        // do things with the hashmaps elements
    }
}

有没有一种简单的方法来做到这一点?


答案 1

如果您真的只想要第一个键的值,这是一般的解决方案

Object firstKey = myHashMap.keySet().toArray()[0];
Object valueForFirstKey = myHashMap.get(firstKey);

答案 2

您可以通过调用 来迭代密钥,也可以通过调用 来迭代条目。迭代条目可能会更快。map.keySet()map.entrySet()

for (Map.Entry<String, List<String>> entry : map.entrySet()) {
    List<String> list = entry.getValue();
    // Do things with the list
}

如果要确保以与插入键相同的顺序循环访问这些键,请使用 .LinkedHashMap

顺便说一句,我建议将映射的声明类型更改为 。始终最好根据接口而不是实现来声明类型。<String, List<String>>