Java中的Map接口及实现类

446 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

Java中的Map接口及实现类

需要:掌握Map接口及其实现类的特点及相关方法的用法。

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():???

       V get(Object key):根据键获取值

       Set<K> keySet():获取集合中所有键的集合

       Collection<V> values():获取集合中所有值的集合

5:长度功能

       int size():返回集合中的键值对的对数

Map集合元素遍历的方式:

思路:

(1):

       A:获取所有的键

       B:遍历键的集合,获取得到每一个键

       C:根据键去找值

(2):

       A:获取所有键值对对象的集合

       B:遍历键值对对象的集合,得到每一个键值对对象

       C:根据键值对对象获取键和值

HashMap集合:

HashMap:是基于哈希表的Map接口实现。

哈希表的作用是用来保证键的唯一性的。

HashMap<String,String>:键:String        值:String

观察键值重复对象的加入情况:覆盖

HashMap集合存储自定义对象,并保证元素的唯一性:

HashMap<c1,String>: 键:c1       值:String

       要求:如果两个对象的成员变量值都相同,则为同一个对象。

重写equals()和hashCode()

TreeMap集合:

TreeMap:是基于红黑树的Map接口的实现。

HashMap<String,String>:键:String       值:String

自然排序:

       Comparable 接口中只提供了一个方法: compareTo(Object obj) ,该方法的返回值是 int 。如果返回值为正数,则表示当前对象(调用该方法的对象)比 obj 对象“大”;反之“小”;如果为零的话,则表示两对象相等。

       使用TreeSet自然排序法时需要实现Comparable接口,并将泛型注为当前对象类,然后重写compareTo()方法。

       关于compareTo方法的使用方法:

@override

public int compareTo(类名 形参){

    return 形参.返回int类型的方法 - this.与前面相同的方法;

    //从大到小排序。若从小到大只需交换减数与被减数

}

比较器排序:

       要点:使用TreeSet比较器排序法时不需要实现Comparable接口,只在新建TreeSet时使用匿名内部类重写compareTo方法即可。当对象类为Java内部类或其他没有修改权限的类时可以使用此方法。效果与自然排序相同。在重写compareTo方法时要注意两个形参属性相减的顺序。

   c1 = new TreeSet (new Comparator(){
        //使用匿名内部类
        @Override
        public int compare(c1 o1, c1 o2) {
            return o1.get() - o2.get();
        }
    });