美文网首页
算法与数据结构知识汇总(六、Map集合的遍历方式)

算法与数据结构知识汇总(六、Map集合的遍历方式)

作者: NoBugException | 来源:发表于2021-08-28 21:44 被阅读0次

定义Map集合

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.put(4, "four");
map.put(4, "five");

(1)需求:只需要获取所有的key,最佳方案如下:

    for (Integer key : map.keySet()) {//在for-each循环中遍历keys
        System.out.println(String.valueOf(key));
    }

优点:比entrySet遍历要快,代码简洁。

(2)需求:只需要获取所有的value,最佳方案如下:

    for (String value : map.values()) {//在for-each循环中遍历value
        System.out.println(value);
    }

优点:比entrySet遍历要快,代码简洁。

(3)假如key和value都需要

方法一
重复(1)和(2)的两次遍历, 分别获取keys和values。

缺点:需要两次遍历。

方法二
通过键找值遍历

    for (Integer key : map.keySet()) {//在for-each循环中遍历keys
        String value = map.get(key);
        System.out.println(key+"========"+value);
    }

缺点:根据键取值是耗时操作,效率非常的慢, 所以不推荐。

方法三
通过Map.entrySet遍历key和value

    for (Map.Entry<Integer, String> entry : map.entrySet()) {
        System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
    }

优点:代码简洁,效率高,推荐使用。

方法四
使用Iterator遍历

    Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<Integer, String> entry = iterator.next();
        System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
    }

缺点:代码比起前面几个方法并不简洁。
优点:当遍历的时候,如果涉及到删除操作,建议使用Iterator的remove方法,因为如果使用foreach的话会报错。

[本章完...]

相关文章

网友评论

      本文标题:算法与数据结构知识汇总(六、Map集合的遍历方式)

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