如何使用keySet和entrySet对Map进行遍历呢?

书欣 Java经验 发布时间:2023-01-30 09:47:51 阅读数:7826 1
下文笔者讲述对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可以提高性能
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202301/16750434275575.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者