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()); } } }
返回的结果如图:
汇总:
(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