Java中的集合框架及ArrayList底层原理

本文深入探讨了Java中的集合框架,重点关注ArrayList的实现原理。从Collections接口出发,详细阐述了Set、List和Queue的不同实现,如HashSet、LinkedList和PriorityQueue。接着,文章详细介绍了ArrayList的扩容机制、删除元素的影响、Fail-Fast机制以及序列化过程。通过这些分析,读者可以更好地理解ArrayList的内部工作方式及其性能特点。
摘要由CSDN通过智能技术生成

Java中的容器(集合框架)

在书写程序的时候,我们常常需要对大量的对象引用进行管理。为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中。由于数据容器中存放了我们随时可能需要使用到的对象引用,所以一般的数据容器要都要能能提供方便的查询、遍历、修改等基本接口功能。

 

  • 数组的长度是固定的。集合的长度是可变的。
  • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,只能存储引用数据类型,例如存储包装类,而且对象的类型可以不一致。
  • 在开发中一般当对象多的时候,使用集合进行存储。

 

Java容器主要包括 Collection (单列集合)和 Map (双列集合)两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。

 

Collections接口

 

 

1. Set

TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。

HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。

LinkedHashSet:具有 HashSet 的查找效率࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值