|  | 
 
| 
本帖最后由 moc 于 2018-12-26 22:32 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 1、Map简介
 特点:
 ① 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
 ② Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。
 ③ 与Collection是平级接口。
 Map集合方法:
 1. 添加功能
 V put(K key,V value)  ------------->  添加元素。
 如果键是第一次存储,就直接存储元素,返回null.
 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值.
 2. 删除功能
 void clear()   ----------------------->  移除所有的键值对元素
 V remove(Object key)  ----------->  根据键删除键值对元素,并把值返回
 3. 判断功能
 boolean containsKey(Object key)  ---------->  判断集合是否包含指定的键
 boolean containsValue(Object value)  ------>  判断集合是否包含指定的值
 boolean isEmpty()   --------------------------->  判断集合是否为空
 4. 获取功能
 Set<Map.Entry<K,V>> entrySet() -------->  返回此映射中包含的映射关系的 Set 视图。
 V get(Object key) ---------------------------->  根据键获取值
 Set<K> keySet()  ---------------------------->  获取集合中所有键的集合
 Collection<V> values() --------------------->   获取集合中所有值的集合
 5、长度功能
 int size()  ------------------------------------->  返回集合中的键值对的对数
 示例:
 
 2、HashMap复制代码Map<String, String> map = new HashMap<String, String>();   // 创建集合对象
map.put('A', "Java");    // 创建元素并添加到集合
map.put('B', "C/C++");
map.put('C', "Python");
map.put('D', "PHP");
// map.clear();        // 移除所有的键值对元素
map.remove('A');    // 根据键删除键值对元素,并把值返回
map.containsKey('B');    // 判断集合是否包含指定的键
boolean isEmpty();         // 判断集合是否为空
map.size();    // 返回集合中的键值对的对数
System.out.println("map:" + map);   // 输出集合名称
map.get('C');  // 根据键获取值
Set<String> set = map.keySet();  // 获取集合中所有键的集合
Collection<String> con = map.values();  // 获取集合中所有值的集合
Set<Map.Entry<String, String>> set = map.entrySet();  // 获取所有键值对对象的集合
for (Map.Entry<String, String> me : set) {   // 遍历键值对对象的集合,得到每一个键值对对象
        String key = me.getKey();
        String value = me.getValue();
        System.out.println(key + "---" + value);
}
① 基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。
 ② 哈希表的作用是用来保证键的唯一性的。
 ③ HashMap的key则需要通过覆写hashCode方法和equals方法来确保没有重复的key。
 3、LinkedHashMap
 ① Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。
 ② 由哈希表保证键的唯一性。
 ③ 由链表保证键值的有序(存储和取出的顺序一致)。
 
 4、TreeMap复制代码// 创建集合对象
LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
// 创建并添加元素
hm.put("2345", "hello");
hm.put("1234", "world");
hm.put("3456", "java");
hm.put("1234", "javaee");
// 遍历
Set<String> set = hm.keySet();
for (String key : set) {
        String value = hm.get(key);
        System.out.println(key + "---" + value);
}
① 一个有序的key-value集合,基于红黑树的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。
 ② TreeMap是根据key进行排序的,它的排序和定位需要依赖比较器或覆写Comparable接口。
 ③ TreeMap的查询、插入、删除效率均没有HashMap高,一般只有要对key排序时才使用TreeMap。
 ④ TreeMap的key不能为null,而HashMap的key可以为null。
 | 
 |