java - Java HashMap: 如何获取键的第一个值?

我尝试使用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
 }
}

有没有简单的方法来做到这个?

时间:

通过调用map.keySet()可以遍历键,或者通过调用map.entrySet()来遍历条目,迭代条目可能会更快。


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

如果要确保按照插入的顺序以相同的顺序循环访问key,则使用LinkedHashMap 。

另外,我建议将声明的映射类型更改为<String, List<String>> ,始终以接口而不是实现来声明类型总是最好的。


Object myKey = myHashMap.keySet().toArray()[0];

在这种情况下,你可能需要一个LinkedHashMap


int index = 0;
for ( Map.Entry<String,ArrayList<String>> e : myHashMap.iterator().entrySet() ) {
 String key = e.getKey();
 ArrayList<String> val = e.getValue();
 index++;
}

LinkedHashMap是一个特殊的例子。

你可以:


for(String key: hashMap.keySet()){
 for(String value: hashMap.get(key)) {
 // use the value here
 }
}

这将遍历每个键,然后遍历与每个键关联的列表的每个值。


for (Object key : data.keySet()) {
 String lKey = (String) key;
 List<String> list = data.get(key);
}

HashMaps不按特定顺序保留你的键/值对,它们基于Object.hashCode()方法中每个键返回的哈希值排序,但是,你可以使用一个迭代器迭代键/值对的集合,其中包括:


for (String key : hashmap.keySet()) 
{
 for (list : hashmap.get(key))
 {
 //list.toString()
 }
}


Map<String, List<String>> myMap;

for ( List<String> stringList : myMap.values() ) {
 for ( String myString : stringList ) {
 // process the string here
 }
}

values()方法是映射接口的一部分,并返回映射中值的Collection视图。

...