2008-09-24 74 views

回答

14

不,不一定。你应该真的使用entrySet()。iterator()来达到这个目的。使用此迭代器,您将遍历Map中的所有Map.Entry对象,并可以访问每个键和关联的值。

0

这个问题起初让我困惑,但@Matt把它解决了。

考虑使用entrySet()方法,该方法返回Map上的具有键值对的集合。

Map<Integer, Integer> a = new HashMap<Integer, Integer>(2); 
a.put(1, 2); 
a.put(2, 3); 
for (Map.Entry<Integer, Integer> entry : a.entrySet()) { 
    System.out.println(entry.getKey() + " => " + entry.getValue()); 
} 

此输出:

1 => 2 
2 => 3 
3 => 3 
+0

我认为这就是最初的问题,但听起来像他独立使用.keys()和.values()方法迭代键和值。我不认为在这种情况下LinkedHashMap解决了这个问题 – Matt 2008-09-24 16:04:13

+0

谢谢马特 - 让我感到困惑:)。 – 2008-09-24 16:06:07

+0

在不同的笔记中,您绝对不应该创建一个与预期元素数量相同的HashMap。 HashMaps有一个通常为75%的负载因子。这意味着如果地图已经占满了75%,并且添加了一个元素,它会增加它的大小。 – 2008-09-24 18:42:30

2

值()和keySet()都委托给entrySet()迭代器,因此它们将以相同的顺序返回。但是像Alex说的那样,直接使用entrySet()迭代器会更好。

8

使用是的entrySet提到@Cuchullain:

Map<String, String> map = new HashMap<String, String>(); 

// populate hashmap 

for (Map.Entry<String, String> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    String value = entry.getValue(); 
    // your code here 
} 
0

我第二@basszero。虽然

for (Map.Entry<Integer, Integer> entry : a.entrySet()) 

将工作,我发现使用数据结构,这会自动更好。现在,你可以迭代“正常”

0

HashMap的keySet方法返回一个Set,它不保证顺序。
HashMap的values()方法返回一个Collection,它不保证顺序。

这就是说,问题是“他们会关联”,所以技术上答案可能是,但不要依赖它。

1

我同意pmac72。不要以为你会从无序集合中得到有序的值或键。如果时间久了,这只是纯粹的危险。如果您想要保留订单,请使用LinkedHashMap或TreeMap或公用集合OrderedMap。

3
public class Test { 
public static void main(String[] args) { 
    HashMap <String,String> hashmap = new HashMap<String,String>(); 
    hashmap.put("one", "1"); 
    hashmap.put("two", "2"); 
    hashmap.put("three", "3"); 
    hashmap.put("four", "4"); 
    hashmap.put("five", "5"); 
    hashmap.put("six", "6"); 

    Iterator <String> keyIterator = hashmap.keySet().iterator(); 
    Iterator <String> valueIterator = hashmap.values().iterator(); 

    while(keyIterator.hasNext()) { 
    System.out.println("key: "+keyIterator.next()); 
    } 

    while(valueIterator.hasNext()) { 
    System.out.println("value: "+valueIterator.next()); 
    } 
} 
} 

key: two 
key: five 
key: one 
key: three 
key: four 
key: six 
value: 2 
value: 5 
value: 1 
value: 3 
value: 4 
value: 6 
相关问题