网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

这篇文章主要介绍了JavaMap两种遍历方式keySet与entrySet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

1.使用keySet进行遍历

实现步骤:

(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中

(2)遍历set集合,获得Map集合中的每一个key

(3)通过Map集合中的方法get(key),通过key找到value

@Test
public void testKeySet() {
    Map<String, Integer> map = new ConcurrentHashMap<>(16);
    map.put("one",1);
    map.put("two",2);
    map.put("three",3);
    // 1.增强for循环遍历map中的key
    for (String key : map.keySet()) {
        // 通过key找到对应的value
        Integer value = map.get(key);
        System.out.println(key + "->" +value);
    }
    System.out.println("------------------------");
    // 2.使用迭代器来进行遍历(map集合中所有的key取出来,存储到Set集合中)
    Iterator<String> iteratorKey = map.keySet().iterator();
    while (iteratorKey.hasNext()){
        String key = iteratorKey.next();
        Integer value = map.get(key);
        System.out.println(key + "->" +value);
    }
}

2.使用entrySet进行遍历

实现步骤:

(1)Map.entrySet()把map的键值映射成Set集合

(2)Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象

(3)getKey(): 返回键值对的key

(4)getValue(): 返回键值对的value

@Test
public void testEntrySet() {
    Map<String, Integer> map = new ConcurrentHashMap<>(16);
    map.put("one",1);
    map.put("two",2);
    map.put("three",3);
    // Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象。
    // 而keySet中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet要比keySet快一倍左右。
    Set<Map.Entry<String, Integer>> entries = map.entrySet();
    Iterator<Map.Entry<String, Integer>> entryIterator = entries.iterator();
    while (entryIterator.hasNext()){
        // 迭代出来的是每一个实例的对象,包含键值对
        Map.Entry<String, Integer> entry = entryIterator.next();
        String key = entry.getKey();
        Integer value = entry.getValue();
        System.out.println(key + "->" + value);
    }
}

3.对比

(1)keySet获取value只能通过先获取key才能得到value

(2)entrySet在迭代之后可以直接从迭代出来的实例对象中直接获取Key和Value

(3)两个方法遍历的结果都一样,若对查询速度有要求就选entrySet(),entrySet可以提高性能。


评论 0

暂无评论
0
0
0
立即
投稿
发表
评论
返回
顶部