集合(Collection)框架底层数据结构总结

本文总结了Java集合框架中List、Set和Map的数据结构。List包括Vector和ArrayList(基于数组),以及LinkedList(JDK1.6前为双向循环链表,1.7后取消循环)。Set方面,HashSet基于HashMap,LinkedHashSet使用LinkedHashMap实现,TreeSet基于红黑树。在Map中,HashMap在JDK1.8前是数组+链表,1.8后链表过长会转为红黑树;LinkedHashMap增加了双向链表保持插入顺序;Hashtable和TreeMap同样基于红黑树。选用集合时,考虑是否需要排序、线程安全及元素唯一性。
摘要由CSDN通过智能技术生成
List
  • Vector: Object[] 数组;
  • Arraylist: Object[] 数组;
  • LinkedList: 双向链表(JDK1.6 之前为双向循环链表,JDK1.7 取消了循环)
Set
  • HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素;
  • LinkedHashSet: LinkedHashSet 继承与 HashSet,并且其内部是通过 LinkedHashMap 来实现的,有点类似于 LinkedHashMap 的内部是基于 HashMap 实现;
  • TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树)
Map
  • HashMap: JDK1.8 前,HashMap 由数组+链表组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”)。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,会将链表转化为红黑树,以减少搜索时间;
  • LinkedHashMap:<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值