1.Map集合:该集合存储的是键值对,一对一对来存,而且要保证键的唯一性。(将键映射到值的对象,一个映射不能包含重复的键,一个键只能映射一个值)
2.Map: ⒈HshTable 底层是哈希表数据结构,支持同步,不可以存入null键和null值,
⒉HashMap 底层是哈希表数据结构,不支持同步,可以存入null键和null值,(替代了HashTable,比HashTbale效率高)
⒊TreeMap 底层是二叉树数据结构,不支持同步,可以给集合中的键进行排序。
3.Map和Set很像,其实Set底层就是使用了Map。
4.基本方法:
⒈clear();清除所有映射。
⒉containsKey(Object key);判断是否包含指定的键
⒊containsValue(Object value);判断是否包含指定的值
⒋values();返回一个Collection集合,集合中包含该映射的所有值
⒌get(key);获取指定键的值
⒍isEmpty();判断该映射是否为空
⒎put(key,value);将指定的值与此映射中指定的键关联,返回键以前关联的值,若键第一次关联则返回null
⒏putAll(Map<? extends key, ? extends value>);
⒐remove(Object key);如果存在指定键的映射关系,则将其从此映射中移除,返回键以前关联的值,如果没有key的映射关系,则返回null
10.keySet();返回此映射中包含键的Set视图,(其实就是返回一个Set集合,该集合中包含映射中所有的键)
11.entrySet();返回此映射中包含映射关系的Set视图,其类型为Map.Entry<key,value>
注:Map.Entry其实是一种类型,通过Set集合迭代出每一个Map.Entry,然后通过Map.Entry中特有方法getKey() getValue()来获取键和值,也可以通过setValue(V value) 来更改值。
5.Map集合取出的原理:将Map转化为Set集合,再通过迭代器取出数据。
6.当发现有映射关系的数据进行存储时,可以选择Map集合。
7.Map集合的扩展:Map集合中,映射关系中还具有映射关系的类型;
例如一个国家有多个省,每个省有多个市,每个市又有多个县;
Map<Province,Map<City,County>> map = new HashMap<Province,Map<City,County>>();
注:要保证键的唯一性,自定义类要重写hashCode() equals()