• 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比较器

  • 相关阅读:
    Zero Copy
    内核态(Kernel Mode)与用户态(User Mode)
    Netty端口被占用问题
    AsyncHttpClient的连接池使用逻辑
    HashMap 与 ConcurrentHashMap
    Java NIO Test Case
    Netty writeAndFlush() 流程与异步
    Java 文件路径相关
    代理的匿名程度
    Netty堆外内存泄露排查与总结
  • 原文地址:https://www.cnblogs.com/RosemaryJie/p/13239044.html
Copyright © 2020-2023  润新知