Java中遍历Map的各种方式

作者: wangmin | 来源:发表于2016-02-27 15:56 被阅读3786次

在遍历Map集合之前首先先定义一个Map对象:

Map<String, String> map = new LinkedHashMap<String, String>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
map.put("4", "fore");
map.put("5", "five");

这个地方使用的是LinkedHashMap,主要是为了确保让map中的元素是按照插入的顺序存放的。

1. 使用keySet()方法遍历

使用keyset方法遍历,是先取出map的key组成的Set集合,通过对Set集合的遍历,然后使用map.get(key)方法取出value值。

for (String key : map.keySet()) {
    System.out.println(key + " : " + map.get(key));
}

2. 使用map的values()方法遍历集合的values

map.values()返回的是由map的值组成的Collection,这个方法只能遍历map的所有value,不能得到map的key。

for (String value : map.values()) {
    System.out.println(value);
}

3. 使用map的entrySet()方法遍历

使用map的entrySet()方法返回一个以Entry为元素的Set集合,然后对Set集合进行遍历。

for (Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " +     entry.getValue());
}

4. 通过keySet()返回的集合的iterator遍历

由于map.keySet()返回的是一个Set集合,所以通过它的iterator()方法返回一个迭代器,通过迭代器遍历map。

Iterator<String> it = map.keySet().iterator();
while(it1.hasNext()) {
    String key = it1.next();
    System.out.println(key + " : " + map.get(key));
}

5. 通过values()返回的Collection的iterator遍历

map.values()方法返回的是一个Collection对象,这个集合对象可以使用iterator方法访问。

Iterator<String> it = map.values().iterator();
while(it1.hasNext()) {
    String key = it1.next();
    System.out.println(key + " : " + map.get(key));
}

6. 通过entrySet()返回的Set的iterator遍历

同上,map.entrySet()方法返回的是一个Set<Entry<String, String»类型的集合,可以使用iterator来访问该集合。

Iterator<Entry<String, String>> it =    map.entrySet().iterator();
while(it3.hasNext()) {
    Entry<String, String> entry = it3.next();
    System.out.println(entry.getKey() + " : " +     entry.getValue());
}

以上总结了对map集合的集中遍历方式,根据自身需要灵活选择使用哪种方式。

相关文章

网友评论

  • f3f4672ef98e:第一次用到了LinkedHashMap,先存先取,之前一直是用HashMap,涨知识了
  • ca5030c3d3e6:我想问一下,第五种方法,通过map.values()方法是返回的Collection类型的Map中的值对象吧?
    所以map.get(it.next())无法取得。
    还有最后一个疑问:while循环里的it1是哪里来的?
    个人愚见,望解答~~ :grin:
    13e6d41251fe:正如你所说的,返回的是map.values()的对象集合,使用map.get(it.next())得到的将是null
    另外,it1应该是打错了而已吧

本文标题:Java中遍历Map的各种方式

本文链接:https://www.haomeiwen.com/subject/rlbwkttx.html