moc 发表于 2018-12-26 22:32:48

Java-022集合框架之Map

本帖最后由 moc 于 2018-12-26 22:32 编辑

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()------------------------------------->返回集合中的键值对的对数
示例:
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);
}2、HashMap
① 基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。
② 哈希表的作用是用来保证键的唯一性的。
③ HashMap的key则需要通过覆写hashCode方法和equals方法来确保没有重复的key。
3、LinkedHashMap
① Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。
② 由哈希表保证键的唯一性。
③ 由链表保证键值的有序(存储和取出的顺序一致)。
// 创建集合对象
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);
}4、TreeMap
① 一个有序的key-value集合,基于红黑树的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。
② TreeMap是根据key进行排序的,它的排序和定位需要依赖比较器或覆写Comparable接口。
③ TreeMap的查询、插入、删除效率均没有HashMap高,一般只有要对key排序时才使用TreeMap。
④ TreeMap的key不能为null,而HashMap的key可以为null。

zwhe 发表于 2020-6-5 11:04:51

{:7_125:}
页: [1]
查看完整版本: Java-022集合框架之Map