文章标题 java集合框架学习(-)针对ArrayList和LinkedList的学习小结

本文深入解析Java集合框架(JCF),重点介绍了List与Set接口下的ArrayList和LinkedList两种集合类的特点及应用场景,并对比了它们在查询、增删操作上的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讲一下对java集合框架的理解
JCF(Java Collections Framework)为Java开发者提供了通用的容器,容器里存放不同的对象引用,用户在使用时通过相应的容器接口便能实例化具体的对象,调用对象已经封装好的方法实现相关操作。主要由一些接口和类组成,比较重要的是List,Set和Map这三种接口,其中List和Set是Collection接口的两个子接口。
放上一张精彩的图片供参考:
这里写图片描述
可以看到JCF有两个主要的接口Collection接口和MAP接口组成,这两个接口下又提供了Set、List、Queue和SortedMap等重要的接口,每个接口下又有具体的集合类,see!
这里写图片描述
看到这相信大家已经对集合以及集合类有了一定了解,接下来让我们先从set接口两个重要的集合类ArrayList和LinkedList说起吧,准备好了吗,go!
首先,ArrayList,可以理解为基于数组的线性表,以数组作为存储的数据结构,实现起来比较简单,以下标为依据实现随机查找和遍历,时间复杂度为O(1),因此查询速度快;但进行插入删除时需要移动一些元素,增删慢。初始化时,如果没有指定表长,默认为10。每次add操作是先进行ensureCapacity操作,如果需要扩容,就将新的capacity增加原来的容量的一半,然后调用Arrays.copyof操作将原来的数组元素elementData复制到新的空间。
LinkedList实现的数据结构是一个双向的循环链表,增删快,只需要修改前端和后继的指向即可;但是每次查询时要从头一个个的比较遍历,因此查询速度相对较慢,时间复杂度为O(n);进行add操作时分两种情况,具体文档上有,主要是对结点进行操作。
查阅相关资料知,ArrayList和LinkedList均是线程不安全的,就是说如果有多个线程都想进行某一操作(比如添加一个元素),系统不能实现同步处理(跟进程中顺序操作不当会造成结果的不可再现性有点类似吧),然后出现逻辑错误就会抛出异常。解决的方法有两个,第一个是采用Collections.synchronizedList()方法对其进行包装,使多个进程之间实现同步。第二个是采用Vector,它是一个支持动态增长的数组(以前做密码学编程的时候用到过),支持同步机制,但是速度总体上没有AarryList快,扩容操作时容量会增加一倍。
就使用环境来说的话,如果查询操作较多,ArrayList是最适合的,采用数组实现起来比较简单;如果增删操作较多,那就要采用链表机制的LinkedList;如果系统中设计多线程操作较多,可以考虑使用Vector。
写到这的时候都要累的吐血了,开玩笑的哈!我综合了一些面试题有关这两个集合类的知识点和一些精彩的文章,提炼出来了这几点,希望能让和我一样的初学者做一个近似全面的理解。
掌握了这些知识点是远远不够的,学长说对具体的数据结构、算法的实现最好也要清楚,具体的插入、删除、遍历等操作这里附上一个链接,想深入了解的可以进一步参考:
https://github.com/CarpenterLee/JCFInternals/blob/master/markdown/2-ArrayList.md(这是有关Arraylist的)
https://github.com/CarpenterLee/JCFInternals/blob/master/markdown/3-LinkedList.md(这是有关LinkedList的)

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值