【Java】集合框架-简介【主线学习笔记】


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


一. 数组存储

优点:

  1. 固定长度:数组一旦初始化,长度即确定,不可更改。例如:

  2. 元素有序、紧密排列:数组中的元素按顺序存储,且元素在内存中是连续的。元素是有序的、按索引访问,且可以重复。

  3. 类型确定:数组一旦初始化,其元素类型即确定,且数组只能存储相同类型的元素。若尝试存储不同类型的数据,编译时会报错。例如:

  4. 元素类型多样性:数组可以存储基本数据类型(如 intdouble 等)或引用数据类型(如对象、字符串等)。例如:

弊端:

  1. 固定长度:一旦数组初始化,长度不可变,无法动态调整,可能导致空间浪费或容量不足的情况。

  2. 单一数据特点:数组中的元素必须是相同类型的,无法适应一些无序、不可重复的数据场景。例如,无法处理具有不同属性的数据集合。

  3. 方法和属性有限:数组本身只提供了一些基本操作(如访问元素、修改元素等),没有像集合类(如 ArrayList)那样丰富的方法和属性。在需求复杂的情况下,开发者需要自己编写额外的代码逻辑来满足特定功能。

  4. 针对数组中元素的删除、插入操作,性能较差。

二. Java集合框架体系(java.util包下)

  1. java.util.Collection 接口:存储一个或多个元素的数据结构集合的根接口。
    List 接口存储有序且可重复的数据。元素按插入顺序排列,可以包含重复元素。实现类有: ArrayList:基于动态数组实现,支持快速随机访问,但在中间插入和删除性能较差。 LinkedList:基于双向链表实现,支持高效的插入和删除操作,但随机访问性能较差。 Vector:与 ArrayList类似,但 Vector是线程安全的,通常不推荐使用,因为性能较低。
    Set 接口存储无序且不可重复的数据。集合中没有重复元素。实现类有: HashSet:基于哈希表实现,元素无序且不重复,查找速度快。LinkedHashSet:基于哈希表和链表实现,保持插入顺序,但元素仍不可重复。TreeSet:基于红黑树实现,存储元素时会进行排序,因此元素是有序的。

  2. java.util.Map 接口存储一对一对(键值对)数据的集合,键和值是不同的数据类型。 实现类有:HashMap:基于哈希表实现,存储键值对,键是唯一的,无序存储;LinkedHashMap:继承自 HashMap,保持插入顺序或访问顺序;TreeMap:基于红黑树实现,按键的自然顺序或指定的比较器顺序进行排序;Hashtable:与 HashMap 类似,但 Hashtable是线程安全的,通常不推荐使用;Properties:继承自 Hashtable,用于存储键值对,常用于读取配置文件等场景,键和值都是字符串类型。

1. 集合与数组的相互转换

  1. 集合 → 数组:使用 toArray() 方法。
  2. 数组 → 集合:使用 Arrays.asList() 方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫本初阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值