java--Collection继承结构图

一,Set集合--HashSet 

  1,HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构。

  2,哈希表又叫散列表,哈希表底层是一个数组,这个数组中每一个元素是一个单向链表。每个单项链表都有一个独一无二的hash值,代表数组的下标。在某个单向链表中的每一个节点上的hash值是相等的。

    hash值实际上是key调用hashCode方法,再通过“hash  function”转换成的值。

  3,如何向哈希表中添加元素:

    先调用被存储的key的hashCode方法,经过哈希函数得出hash值,如果在这个哈希表中不存在这个hash值,则直接加入元素。

    如果该hash值已经存在,继续调用这个key的equals方法,如果equals方法返回false,则将该元素添加。如果equals方法返回true,则放弃添加该元素。

  4,HashSet其实是HashMap中的key部分。HashMap中的key有什么特点,HashSet则有什么相同的特点。 

  5,HashMap和HashSet初始化容量都是16,默认加载因子是0.75

   Hashtable初始化容量都是11,默认加载因子是0.75

二,Map集合

1,Map集合中常用的方法

    void  clear();  清空Map

    boolean  isEmpty();  判断该集合是否为空

    int  size();  获取Map中键值对的个数

 

    Object  put(Object  key , Object  value);  向集合中添加键值对

    Object  get(Object  key);  通过key获取value

 

    boolean  containsKey(Object  key);  判断Map中是否包含这样的key

    boolean  containsValue(Object  value);  判断Map中是否包含这样的value

 

    Object  remove(Object  key);  通过key将键值对删除

 

    Collection  values();  获取Map集合中所有的value

 

    Set  keySet();  获取Map中所有的key

 

    Set  entrySet();  返回此映射中包含的映射关系的Set视图(可以理解为输出键值对)

      注意:存储在Map集合key部分的元素需要同时重写hashCode+equals方法

        重写hashCode是为了散列均匀

        重写equals方法是为了添加加入元素的判断标准

2,Properties(Hashtable的子类):也是由key和value组成,但是key和value都是字符串类型

3,SortedMap中的key特点:无序不可重复,但是存进去的元素可以按照大小自动排列

  如果向自动排序key部分的元素需要:实现Comparable接口;单独写一个Comparator比较器

 

posted @ 2020-07-05 11:35  徐阶  阅读(429)  评论(0编辑  收藏  举报