版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42528266/article/details/102977980
Java集合
集合架构
- Collection 接口存储一组不唯一,无序的对象
- List 接口存储一组不唯一,有序(索引顺序)的对象
- Set 接口存储一组唯一,无序的对象
- Map接口存储一组键值对象,提供key到value的映射
List
特点:有序 不唯一(可重复)
ArrayList 线性表中的顺序表
- 在内存中分配连续的空间,实现了长度可变的数组
- 优点:遍历元素和随机访问元素的效率比较高
- 缺点:添加和删除需大量移动元素效率低,按照内容查询效率低,
LinkedList 线性表中双向链表
- 采用双向链表存储方式。
- 缺点:遍历和随机访问元素效率低下
- 优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才可。如果插入删除发 生在头尾可以减少查询次数)
List常用方法
- List相对Collection增加了关于位置操作的方法
- List的遍历方法
理解面向接口编程
List list = new ArrayList();
ArrayList list = new ArrayList();
- 集合中内容是否相同
- 通过equals进行内容比较,而是==引用比较
set
特点:无序 唯一(不重复)
HashSet
- 采用Hashtable哈希表存储结构(神奇的结构)
- 优点:添加速度快 查询速度快 删除速度快
- 缺点:无序
LinkedHashSet
- 采用哈希表存储结构,同时使用链表维护次序
- 有序(添加顺序)
TreeSet
- 采用二叉树(红黑树)的存储结构
- 优点:有序 查询速度比List快(按照内容查询)
- 缺点:查询速度没有HashSet快
Set常用方法
- Set相对Collection没有增加任何方法
- Set的遍历方法
- for-each
- Iterator迭代器
- 无法使用for进行遍历(因为无序,所以没有get(i))
- HashSet、HashMap或Hashtable中对象唯一性判断
- 重写其hashCode()和equals()方法
- TreeSet中指明排序依据
- 实现Comparable接口
- 创建实现Compator接口的类。
哈希表存储原理
Map
特点 key-value映射
HashMap
- Key无序 唯一 (Set)
- Value 无序 不唯一 (Collection)
LinkedHashMap
- 有序的HashMap 速度快
- TreeMap
- 有序 速度没有hash快
Set和Map采用了相同的数据结构,只用于map的key存储数据,就是Set