Map是一个双列集合,也就是我们常说的键值对。Map是按照键(key)存储元素的容器,Map中不能有重复的键(个人理解,可以把Map中的key理解为表中的主键),Map中我们常用的是HashMap和TreeMap。
1、set<K>keySet() //返回所有的key对象的Set集合。
2、Collection<V>values() //获取所有的值,单不能获取到key对象
3、Set<Map.Entry<k,v>>entrySet() 将map集合中的键值映射关系打包成给一个对象
底层是哈希表数据,线程是不同步的,可以存入null值,null值。
获取HashMap键对应的值的方法:
将Map中的key转换成Set集合,通过Set的迭代器取出Set集合中的每一个key,在通过get(Objectkey)方法获取键对应的值。
package CollectionDemo; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { Map<Integer,String> map=new HashMap<Integer,String>(); map.put(1, "aaa"); map.put(2,"bbb"); map.put(3,"ccc"); //使用keyset Set<Integer> ks=map.keySet(); Iterator<Integer> it=ks.iterator(); while(it.hasNext()) { Integer key=it.next(); String value=map.get(key); System.out.println("key="+key+" value="+value); } } }
通过values获取所有值,但是不能通过value来获取key对象
package CollectionDemo; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { Map<Integer,String> map=new HashMap<Integer,String>(); map.put(1, "aaa"); map.put(2,"bbb"); map.put(3,"ccc"); //使用values Collection<String> vs=map.values(); Iterator<String> it=vs.iterator(); while(it.hasNext()) { String value=it.next(); System.out.println("value="+value); } } }
将Map集合中的键和值映射关系打包为一个对象(Map.Entry),将改对象存入Set集合,Map.Entry是一个对象,那么该对象具备的getKey,getValue获取键和值。
package CollectionDemo; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapDemo { public static void main(String[] args) { Map<Integer,String> map=new HashMap<Integer,String>(); map.put(1, "aaa"); map.put(2,"bbb"); map.put(3,"ccc"); Set<Map.Entry<Integer,String>> es=map.entrySet(); Iterator<Map.Entry<Integer, String>> it=es.iterator(); while(it.hasNext()) { Map.Entry<Integer, String> en=it.next(); Integer key=en.getKey(); String value=en.getValue(); System.out.println("key="+key+" value="+value); } } }
注:Set的元素不可重复,Map的键不可重复,如果存入重复的元素,Set中重复元素不能存入,add方法会返回false,Map的重复键值将覆盖就键,将旧值返回。