Map集合没有继承Collection接口,其提供的是key到value的映射。Map中不能包含相同的key只能映射一个value。Key还决定了存储对象在映射中的存储位置,但是鄙视由Key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射内部区域的起始位置,从而确定存储对象在映射中的存储位置。Map集合包括Map接口以及Map接口的所有实现类。 Map接口常用的实现类有HashMap和TreeMap。建议使用HashMap类实现Map集合,由于HashMap类实现Map集和的Map集合添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找;而TreeMap中映射关系存在一定的=顺序,如果希望Map集合的对象也存在一定的顺序,应使用TreeMap类实现Map集合。 HashMap类是基于哈希表的Map接口实现,此实现提供多有可选的映射操作,并允许使用快速查找。此类不保证映射顺序,特别是他不保证该顺序恒久不变。 TreeMap类不仅实现了Map接口,还是实现了java.util.SortedMap几口,因此,集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap比HashMap性能稍差。 由于TreeMap类实现Map集合中的映射关系是根据对象按照一定顺序排列的,因此不允许键对象是Null. 以下是课堂有关代码的笔记: (1)Map集合:该集合存储键值对,要保证键的唯一性 1,添加。 put(K key,v value) putAl1(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() entrySet() keySet() Map Hashtable:底层是哈希表数据结构,不可以存入Null作为键,作为值存在。该集合是线程同步的。 HashMap:底层是哈希表数据结构,可以存入Null作为键,作为值存在。该集合不是线程同步的。 TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。 和Set很像,Set集合底部使用map集合。 import java.util.*; class MapDemo{ public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); //当添加元素的时候,如果出现添加相同的键时,那么后添加的值会覆盖原来对应键的值,用put方法会返回被覆盖的值。 System.out.println("put:"+map.put("04","lisi")); System.out.println("put:"+map.put("04","wangwu")); System.out.println("put:"+map.put("04","zhangsan")); //添加元素 map.put("01","ZhangSan1"); map.put("02","ZhangSan2"); map.put("03","ZhangSan3"); System.out.println("containsKey:"+map.containsKey("022"));
System.out.println("get:"+map.get("02"));
map.put("04",null); System.out.println("get:"+map.get("04")); //可以通过Get方法的返回值来判断一个键是否存在,通过返回Null来判断 Collection<String> coll=map.values(); System.out.println(coll); }} (2)map集合的两种取出方式: 1,返回值set<k> keySet:将map中所有的键存入set集合,因为set具备迭代器,所以可以用迭代的方法取出所有的键,根据get方法。获取每 一个键对应的值。Map集合的取出原理:将map集合转换成set集合,通过迭代器取出。 2,返回值Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中,而这个关系的数据类型就是:MapEntryimport java.util.*; class MapDemo2{ public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("01","zhangsan1"); map.put("02","zhangsan2"); map.put("03","zhangsan3"); map.put("04","zhangsan4"); //将Map集合中的映射关系取出来。存入到set集合中 Set<Map.Entry<String,String>> entrySet=map.entrySet(); Iterator<Map.Entry<String,String>> it=entrySet.iterator(); while(it.hasNext()) { Map.Entry<String,String> me=it.next(); String key=me.getKey(); String value=me.getValue(); System.out.println(key+"......"+value); }}} |