Map集合中values()、keySet()、entrySet()的性能比较

时间:2022-07-26 19:38:09

Map集合中三种方法的简介:

values():获取集合中的所有的value值;

keySet():将Map中所有的key存放到Set集合中。应为Set集合有迭代器,可以通过迭代器循环key,在通过get()方法,得到每个key所对应的value;

entrySet():Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图。 Map.Entry表示映射关系。entrySet():迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口 。

package com.dbzhang.demo;
/***
 * 
 */
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapFunction {

	public static void main(String[] args) {
		Map<String,String> map = new HashMap<String,String>();
		map.put("01", "a");
		map.put("02", "b");
		map.put("03", "c");
		map.put("04", "d");
		
		/**通过values()方法,获取集合中所有的值**/
		Collection<String> collection = map.values();
		System.out.println(collection);
		
		/**通过keySet()方法将所有的key值存放到Set集合中,Set集合中有迭代器**/
		Iterator<String> iterator = map.keySet().iterator();
		while(iterator.hasNext()){
			String key = iterator.next();
			System.out.println("key="+key+"  "+map.get(key));
		}
		
		/**通过entrySet()方法将key和value存放到Set集合中,Set集合中有迭代器**/
		Set<Entry<String,String>> entry = map.entrySet();
		Iterator<Entry<String,String>> iterators = entry.iterator();
		while(iterators.hasNext()){
			Entry<String,String> entrys  = iterators.next();
			System.out.println("key="+entrys.getKey()+"&&value="+entrys.getValue());
		}
	}

}
 

返回的结果如图:

Map集合中values()、keySet()、entrySet()的性能比较


汇总:

(1)Set<K> keySet():返回值是个只存放key值的Set集合(集合中无序存放的)迭代后只能通过get()取key

(2)Set<Map.Entry<K,V>> entrySet():返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的。迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口

(3)虽然使用keyset及entryset来进行遍历能取得相同的结果但两者的遍历速度是有差别的,keySet()的速度比entrySet()慢了很多也就是keySet方式遍历Map的性能不如entrySet性能好为了提高性能,以后多考虑用entrySet()方式来进行遍历。


参看技术博客:https://blog.csdn.net/kfengqingyangk/article/details/53288152