- 集合的意义
集合是为了连续的存储数据搭建的框架
数组:可以存储基本数据类型和引用类型,数组的长度是固定的,当元素数量未知的情况下不适合使用
集合:只能存储对象,集合的长度可变,多数情况下使用集合
- 集合框架的层次结构
collection接口是集合类接口的根接口,这个接口没有实现类,List和Set接口是继承它而来的
Map接口也是集合类接口的一部分,它和collection独立,Map以键值对的形式存储数据
(迭代器)Iterator接口,所有的集合类中,都实现了Iterator接口,用于遍历集合中元素的接口,三个重要的方法:
hasNext() 是否有下一个元素
next() 返回下一个元素
remove() 删除元素
- List、Set和Map
List(列表):list中的对象是有序的并且元素可以重复的,list是自带索引的,所以查询速度快
Set(集):set里存放的对象是无序的并且不可以重复,set中的对象并不排序,只是简单的加入集合
Map(映射):map中存的是键值对,键不能重复,值可以重复,根据键可以得到值
|
| 是否有序 | 元素是否可以重复 |
collection |
|
| |
List | 是 | 是 | |
set | HashSet | 否 | 否 |
TreeSet | 是(二叉排序树) | 否 | |
Map | HashMap | 否 | key值唯一,value可以重复 |
| TreeMap | 是(二叉排序树) |
- List使用
ArrayList 和 LinkedList这两个类都实现了List接口
这两个在用法上没有区别,LinkedList用在增删改操作较多,查询操作较少的情况,ArrayList是在查询多,增删改少的操作中。
- Set使用
Set和List的区别 Set中的元素不重复且无序,List中的元素是可重复且有序
Set有着collection完全一样的接口,所以不像list一样有额外的功能
存入Set中的元素必须都是唯一的
HashSet:为了快速查找设计的Set,以hash算法对元素进行标记
TreeSet:保存次序的Set,基本结构是树结构,提供有序的序列
LinkedHashSet:以链表的形式存储的HashSet
- Map使用
Map接口并不继承collection 但它也是集合的一部分
Map使用键值对存储数据 每个值都有一个和他相关联的键,我们通过键就可以访问到对应的值
HashMap:Map基于散列的形式
TreeMap:Map基于红黑树的形式
LinkedHashMap:链表形式的HashMap
WeakHashMap:一种特殊形式,具有弱键的Map,对象允许释放
- 迭代器使用
集合全都实现了的接口,用途是遍历集合
list和set遍历的方式通用 for foreach Iterator
map需要转换成set才能进行遍历
- 集合之间嵌套
list和set结构基本相同,不做介绍
1- list中套list
针对将所有数据都显示时方便
2- list中套map
对显示每条规律的数据的其中一条比较方便
3- map中套map
针对数据的查询很方便
4- map中套list
查询表头方便