/* Map集合:该集合存储键值对,一对一对往里面存,而且要保证键的唯一性。 Map比较重要的三个子类: Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的(JDK1.0)元老级的。效率低。 HashMap:底层是哈希表数据结构,允许使用null键null值。该集合是线程不同步的。(JDK1.2)效率高。 TreeMap:底层数据结构是二叉树,线程不同步,可以用于给map集合中的键进行排序。 发现,Map和Set是很相似的。 其实,Set集合底层就是使用了Map集合。 1,添加 put(K key,V value) putAll(Map<? extends k,? extends V>m) 2,删除 clear() remove(Object key) 3,判断 containsValue(Object value) containsKey(Object key) isEmpty() 4,获取 get(Object key) size() values() */ import java.util.*; class MapDemo { public static void main(String[] args) { HashMap<String,String> hm=new HashMap<String,String>(); sop(hm.put("01","zhangsan"));//添加元素 sop(hm.put("01","wangming"));//再次添加相同的键时,后添加的键值会覆盖原有的键值,并返回被覆盖的键值。 hm.put("02","lisi"); hm.put("03","wangwu"); hm.put("04","zhaoliu"); sop(hm); sop(hm.containsValue("zhangsan"));//判断是否包含某一个值,boolean sop(hm.containsKey("02"));//判断是否包含某一个键,boolean sop(hm.remove("03"));//删除某一个键值对,remove的参数是键。 sop(hm); sop(hm.isEmpty());//判断是否为空 sop(hm.get("04"));//根据某个键获取其相应的键值。 sop(hm.size());//返回Hashmap中键值对的个数。 sop(hm.values());//只获取集合中的所有键值,而不获取键。返回类型为collection hm.put("05",null);//添加键值为空的键值对 sop(hm); hm.put("06","madongmei"); sop(hm); sop(hm.get("madongmei")); sop(hm.get("05")); Collection<String> co=hm.values(); //返回类型为collection,所以可以用迭代器来遍历集合中的所有元素。 sop("======================="); Iterator<String> it=co.iterator(); while(it.hasNext()) { sop(it.next()); } } public static void sop(Object obj) { System.out.println(obj); } }
/* map集合的两种取出方式: 1, keySet:将map中所有的键存入到Set集合中,因为Set具备迭代器。 所以可以以迭代的方式取出所有的键,然后再用get方法获得所有的键值。 返回类型:Set<k> Map集合的取出原理:将map集合转换成set集合,再通过迭代器取出。 2, Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry 那么,关系对象Map.Entry获取到后,就可以通过Map.Entry中的getKey和getValue方法来获取Key和Value。 Entry是Map接口的内部接口。内部接口可以被static来修饰。 因为先存在map,然后map中存在映射关系。 */ import java.util.*; class MapDemo1 { public static void main(String[] args) { //keySetDemo();//方式一 entrySetDemo();//方式二 } public static void sop(Object obj) { System.out.println(obj); } public static void keySetDemo() { Map<String,String> map=new HashMap<String,String>(); map.put("03","zhangsan03"); map.put("02","zhangsan02"); map.put("04","zhangsan04"); map.put("01","zhangsan01"); map.put("07","zhangsan07"); map.put("06","zhangsan06"); sop(map); //使用Map的keySet方法将键取出来并放在Set集合中 Set<String> s=map.keySet(); //使用Set集合的Iterator迭代器遍历每个键 Iterator<String> it=s.iterator(); while(it.hasNext()) { String key=it.next(); String value=map.get(key); sop("key:"+key+"..value"+value); } } public static void entrySetDemo() { Map<String,String> map=new HashMap<String,String>(); map.put("03","zhangsan03"); map.put("02","zhangsan02"); map.put("04","zhangsan04"); map.put("01","zhangsan01"); map.put("07","zhangsan07"); map.put("06","zhangsan06"); Set<Map.Entry<String,String>> s=map.entrySet(); Iterator<Map.Entry<String,String>> it=s.iterator(); while(it.hasNext()) { Map.Entry<String,String> me=it.next(); String key=me.getKey(); String value=me.getValue(); sop("key:"+key+"..value:"+value); } } }