如何使用keySet和entrySet对Map进行遍历呢?
下文笔者讲述对Map遍历的方法分享,如下所示
实现思路: 1.使用keySet进行遍历 操作方式如下: 1.1.使用Map集合中的方法keySet(), 将Map集合所有的key取出来,存储到一个Set集合中 1.2.遍历set集合,获得Map集合中的每一个key 1.3.通过Map集合中的方法get(key), 然后借助key找到value 2.使用entrySet进行遍历 2.1 Map.entrySet() 将map的键值映射成Set集合 2.2 Map.entrySet 迭代器会生成EntryIterator, 其返回的实例是一个包含key/value键值对的对象 2.3 getKey(): 返回键值对的key 2.4 getValue(): 返回键值对的value例:
public void testKeySet() { Map<String, Integer> map = new ConcurrentHashMap<>(16); map.put("java265-1",1); map.put("java265-2",2); map.put("java265-3",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); } } public void testEntrySet() { Map<String, Integer> map = new ConcurrentHashMap<>(16); map.put("java265-1",1); map.put("java265-2",2); map.put("java265-3",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); } }
keySet和entrySet区别: 1.keySet获取value 需先获取key才能得到value 2.entrySet在迭代之后 可直接从迭代出来的实例对象中直接获取Key和Value 3.两个方法遍历的结果都一样 但当我们对检索速度要求比较高的话,需使用entrySet(),entrySet可以提高性能
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。