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

2021-08-28  本文已影响0人  NoBugException

定义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的话会报错。

[本章完...]

上一篇 下一篇

猜你喜欢

热点阅读