美文网首页
简述java常用集合的数据结构

简述java常用集合的数据结构

作者: 愚公孙子 | 来源:发表于2019-01-14 00:48 被阅读0次

    HashSet:

    底层是用hashmap实现的,value就是map<k,v>的key,value是static final对象。

    TreeSet:

    底层采用的是红黑树,实现有序化。

    ArrayList:

    底层采用数组,当数据超过数组容量,将会新建一个1.5倍长度的新数组,然后再将原数组的数据克隆过去,擅长查询,拙于修改。

    Linkedlist

    底层采用双向链表,擅长修改,拙于查询。

    HashMap

    在jdk1.7以前,是entity数组和链表的组合,先获取key的hashcode确定对应的数组下标,当如果已经有对象,则遍历对比是否有相同的,有就替代,没有就放链表末尾。但由于链表仍然可能存在过长的情况,这会提高hashmap的时间复杂度,所以jdk1.7以后,在数组长度大于64,链表长度大于8时,会转化为红黑树,降低原链表查询的时间复杂度。

    ConcurrentHashMap

    以前是通过两次hash算法,第一层是statement数组(每个Segment包含多个entity),第二层是entity数组,采用分段锁基数,对每个statement都拥有一个锁,实现线程安全。在JDK1.8以后,采用synchronized和cas和自旋锁来保证线程安全,红黑树保证效率

    相关文章

      网友评论

          本文标题:简述java常用集合的数据结构

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