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可以提高性能。
到此这篇关于JavaMap两种遍历方式keySet与entrySet详解的文章就介绍到这了,更多相关JavaMap keySet与entrySet内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java程序员的10道常见的XML面试问答题(XML术语详解)
包括web开发人员的Java面试在内的各种面试中,XML面试题在各种编程工作的面试中很常见。XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准2014-04-04java微信公众号开发第一步 公众号接入和access_token管理
这篇文章主要为大家介绍了java微信公众号开发,主要内容包括公众号接入和access_token管理,感兴趣的小伙伴们可以参考一下2016-01-01
最新评论