一、集合与数组
- 数组:可以存储基本数据类型和对象,数组的长度固定,不适合在对象数量未知的情况下使用。
- 集合:只能存储对象,对象类型可以不一样,长度可变,可在多数情况下使用。
二、集合框架图
如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口
- Collection接口:是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。
- Map:Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。
- Iterator:所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:
1.hasNext()是否还有下一个元素。
2.next()返回下一个元素。
3.remove()删除当前元素。
三、几种重要的接口和类简介
1、List(有序、可重复、允许存在多个null元素)
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。
2、Set(无序、不能重复、只允许存在一个null元素)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。
扫描二维码关注公众号,回复:
2442994 查看本文章
3、Map(键值对、键唯一、值不唯一、只允许存在一个Key为null元素 )
Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。
对比如下:
|
|
是否有序 |
是否允许元素重复 |
Collection |
|
|
|
List |
是 |
是 |
|
Set |
AbstractSet |
否 |
否 |
|
HashSet |
||
|
TreeSet |
是(用二叉排序树) |
|
Map |
AbstractMap |
否 |
使用key-value来映射和存储数据,key必须唯一,value可以重复 |
|
HashMap |
||
|
TreeMap |
是(用二叉排序树) |