- 集合框架:在常用工具类中,是一整套成体系的工具集。
为什么要使用集合?
主要为了解决程序的数据存储的问题:
- 容器的长度无法动态增长
- 实现多元化数据存储的特性
- 实现各种典型的数据结构(二叉树、散列表)
- 集合提供了很多便利方法:排序,打乱顺序,增,删,改等。
分支
Collection接口
Collection的遍历
ForEeach注意事项
Set接口
HashSet,LinkedHashSet,TreeSet
set特点:
无顺序
存储集合(这里不是指排序)- 迭代时顺序可能与插入顺序不同
不能存储重复
的元素
HashSet
特点:
- 不能保证元素的
排列顺序
,存储顺序可能会与添加顺序不同
不是线程安全
的,若有多个线程并发修改HashSet,必须用代码保证其同步性- 插入的元素值可以为
null
示例代码:
要存入元素,先要判断元素能否存入
具体步骤如下:
- 先判断两元素的
hashCode
是否一样,确认元素在 HashSet 中存放的位置 - 再用
equals()
判断两元素是否相等 - 如果 equals 返回 true,元素
不能存入
(元素重复了)。
LinkedHashSet
继承:HashSet
实现:Set、Cloneable、Serializable
特点:
- 依据 hashCode 确定元素的存放位置
- 链表来维护元素的迭代次序
测试代码
public static void main(String[] args){
Set set = new LinkedHashSet();
set.add("A");
set.add("123");
set.add("我");
set.add("*");
System.out.println( set );
}
测试结果:
TreeSet
TreeSet 是 SortedSet 接口的实现类
继承:AbstractSet
实现:NavigableSet、Cloneable、Serializable、NavigableSet 继承了 SortedSet
数据容器:NavigableMap
特点:
- 集合中的元素
有排序的
- 只能添加
同种类型
的数据 - 集合中不能
添加相等
的元素 - 存放元素时是根据
红黑树
的算法来找到它们的位置 - 不能存入
null
元素
二叉树图解
获取元素(A)
获取元素(B)
元素的存入
自然排序
- 什么是自然排序
由存入元素自身来规定比较大小的方法。 - 具体实现
存入的元素需实现可比较接口,并实现 compareTo 方法,存入元素时 TreeSet 会自动调用元素的 compareTo(Object)来比较当前元素与 TreeSet 中其它元素大小关系进行排序,以确认当前元素的存放位置。
定制排序法(比较器法)
- 特点
单独将比较的规则拿出来,设置到一个比较器中 - 好处
比较规则不仅限于在某个类中使用(某个类不局限于某种比较规则) - 场景
如果有很多个自定义类都是使用相同的比较规则,则可以考虑使用定制排序法来做排序
set总结
List接口
List 集合特点
有序,可重复
- 可通过
索引
来访问元素 - 索引的顺序是
插入时的顺序
ArrayList 对象
ArrayList 简介
ArrayList 特点
ArrayList 原理解析
Vector 对象
Vector 简介
Vector 相比于 ArrayList 的不同
- 方法上的区别
- 其它的区别
Stack栈
ListIterator 接口
接口图
- 前一个元素检测
- 检测下一个元素
- 修改方法
Queue 接口
- 添加元素
- 取出元素
LinkedList 对象
LinkedList 是一个复合类。具有:链表,双端队列,栈三大特性。
总结
Map 映射
-
概念
-
Map 体系
-
映射关系
-
常规操作
map的迭代
HashMap
-
概述
-
属性描述
-
解析加载因子
-
存储原理
-
构造器
LinkedHashMap
- 继承关系
TreeMap
- 概述
HashTable
- 概述
- 与 HashMap 比较
Properties 属性类
- 概述
- 相关方法
Map 总结
- 应用场景