美文网首页
ArrayList、Vector、HashMap、HashSet

ArrayList、Vector、HashMap、HashSet

作者: Roronoa_Zoro_ | 来源:发表于2017-06-02 17:32 被阅读0次

    List 元素是有序的、可重复
    ArrayList、Vector默认初始容量为10
    Vector:线程安全,但速度慢
        底层数据结构是数组结构
        加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
        扩容增量:原容量的 1倍
          如 Vector的容量为10,一次扩容后是容量为20
    ArrayList:线程不安全,查询速度快
        底层数据结构是数组结构
        扩容增量:原容量的 0.5倍+1
          如 ArrayList的容量为10,一次扩容后是容量为16
    Set(集) 元素无序的、不可重复。
    HashSet:线程不安全,存取速度快
         底层实现是一个HashMap(保存数据),实现Set接口
         默认初始容量为16(为何是16,见下方对HashMap的描述)
         加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
         扩容增量:原容量的 1 倍
          如 HashSet的容量为16,一次扩容后是容量为32
    Map是一个双列集合
    HashMap:默认初始容量为16
         (为何是16:16是2^4,可以提高查询效率,另外,32=16<<1       -->至于详细的原因可另行分析,或分析源代码)

         加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
         扩容增量:原容量的 1 倍
          如 HashSet的容量为16,一次扩容后是容量为32

    TreeMap和TreeSet原理

    TreeMap底层是用红黑树来存储,每个Entry对应树的一个节点,TreeMap元素默认从小到大排序。V put(Key k, Value v)实质是二叉排序树的插入算法

    Set和Map的关系

    Set代表无序,不能重复的集合;Map代表Key-Value组成的集合,是一种关联数组。Map的Key要求是不能重复,没有顺序。把Map的所有Key组合起来就是Set。Set keySet();

    Vector和ArrayList区别

    Vector提供synchronized修饰方法,是线程安全版本的ArrayList

    相关文章

      网友评论

          本文标题:ArrayList、Vector、HashMap、HashSet

          本文链接:https://www.haomeiwen.com/subject/xtvufxtx.html