可关注小编私信“教程”,获得下载地址
集合(容器)
目录
•集合的引入
•List (ArrayList LinkedList)
•Set (HashSet LinkedHashSet TreeSet)
本次分享技能点列表
1、集合的引入
集合的使用场合--Where
•举例
•新闻列表
•就业喜报
•就业明星
•邮件列表
•购物车
•当我们需要将一些相同结构的个体整合在一起时,就可以考虑使用集合了 。
为什么使用集合而不是数组--Why
•集合和数组相似点
都可以存储多个对象,对外作为一个整体存在
•数组的缺点
长度必须在初始化时指定,且固定不变
数组采用连续存储空间,删除和添加效率低下
数组无法直接保存映射关系
数组缺乏封装,操作繁琐
集合架构
•Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
•存放在集合中的数据,被称为元素(element)
•Collection 接口存储一组不唯一,无序的对象
•List 接口存储一组不唯一,有序(索引顺序)的对象
•Set 接口存储一组唯一,无序的对象
•Map接口存储一组键值对象,提供key到value的映射
Key 唯一 无序
value 不唯一 无序
2、List
•特点:有序 不唯一(可重复)
•ArrayList
在内存中分配连续的空间,实现了长度可变的数组
优点:遍历元素和随机访问元素的效率比较高
缺点:添加和删除需大量移动元素效率低,按照内容查询效率低,
•LinkedList
采用链表存储方式。
缺点:遍历和随机访问元素效率低下
优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才可。如果插入删除发生在头尾可以减少查询次数)
List常用方法
List相对Collection增加了关于位置操作的方法
List的遍历方法
for
for-each
Iterator迭代器
理解面向接口编程
List list = new ArrayList();
ArrayList list = new ArrayList();
集合中内容是否相同
通过equals进行内容比较,而是==引用比较
3、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接口的类。
哈希表存储原理
神奇的表结构,添加和查询数据速度非常快
演示添加过程
一次添加成功
数据已经存在
多次添加成功
•演示查询过程
1次查询获取
多次查询获取
不存在的数据
•hashCode如何计算
整数、实数
字符串 对象
不知道有多少java程序员能看到这里。
如果你依然觉得有些茫然,不如跟有多年Java开发经验的资深工程师聊一聊。
每天2小时学习时间,密集输入Java开发相关知识及经验,帮你快速实现技术和职业成长上的突破。
只需要关注+转发+评论,然后私信我“教程”就可以获取了,方法很简单,就看自己怎么去把握了,看好你们哦!
閱讀更多 java高級開發 的文章