一、为什么需要集合框架
数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象、或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题
二、集合框架主要接口
No
|
接口
|
描述
|
1
|
Collection
|
是存放一组单值的最大接口,所谓的单值是指集合中的每个元素都是一个对象。一般很少会直接使用此接口直接操作。
|
2
|
List
|
是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩充,里面的内容是允许重复的。
|
3
|
Set
|
是Collection接口的子类,没有对Collection接口进行扩充,里面不允许存放重复内容。
|
4
|
Map
|
Map是存放一对值的最大接口,即,接口中的每个元素都是一对,以key-value的形式保存。
|
5
|
Iterator
|
集合的输出接口,用于输出集合中的内容,只能进行从前到后的单向输出。
|
6
|
ListIterator
|
是Iterator的子接口,可以进行双向输出。
|
7
|
Enumeration
|
是最早的输出接口,用于输出指定集合中的内容。
|
8
|
SortedSet
|
单值的排序接口,实现此接口的集合类,里面的内容是可以排序的,使用比较器排序。
|
9
|
SortedMap
|
存放一对值的排序接口,实现此接口的集合类,里面的内容按照key排序,使用比较器排序。
|
10
|
Queue
|
队列接口,此接口的子类可以实现队列操作。
|
11
|
Map.Entry
|
Map.Entry的内部接口,每个Map.Entry对象都保存着一对key-value的内容,每个Map接口中都保存多个Map.Entry接口实例。
|
三、接口的继承关系
在一般的开发中,往往很少去直接使用Collection接口进行开发,而基本上都是使用其子接口。子接口主要有:List、Set、Queue、SortedSet。
四、Collection子接口的定义
Collection接口虽然是集合的最大接口,但是如果直接使用Collection接口进行操作的话,则表示的操作意义不明确,所以在JAVA开发中已经不提倡直接使用Collection接口了,主要的子接口如下:
- List接口:可以存放重复的内容。
- Set接口:不能存放重复的内容,所有的重复内容是靠hashCode()和equals()两个方法区分的。
- Queue:队列接口。
- SortedSet接口:可以对集合中的数据进行排序。
五、Collection接口的方法定义
No.
|
方法
|
类型
|
描述
|
1
|
public boolean add(E o)
|
普通
|
向集合中插入对象
|
2
|
public boolean addAll(Collection<? extends E> c)
|
普通
|
将一个集合的内容插入进来
|
3
|
public void clear()
|
普通
|
清除此集合中的所有元素
|
4
|
public boolean contains(Object o)
|
普通
|
判断某一个对象是否在集合中存在
|
5
|
public boolean containsAll(Collection<?> c)
|
普通
|
判断一组对象是否在集合中存在
|
6
|
public boolean equals(Object o)
|
普通
|
对象比较
|
7
|
public int hashCode()
|
普通
|
哈希码
|
8
|
public boolean isEmpty()
|
普通
|
集合是否为空
|
9
|
public Iterator<E> iterator()
|
普通
|
为Iterator接口实例化
|
10
|
public boolean remove(Object o)
|
普通
|
删除指定对象
|
11
|
public boolean removeAll(Collection<?> c)
|
普通
|
删除一组对象
|
12
|
public boolean retainAll(Collection<?> c)
|
普通
|
保存指定内容
|
13
|
public int size()
|
普通
|
求出集合的大小
|
14
|
public Object[] toArray()
|
普通
|
将一个集合变为对象数组
|
15
|
public <T> T[] toArray(T[] a)
|
普通
|
指定好返回的对象数组类型
|
六、区别
- Connection:接口存储值不唯一,无序的对象
- List:接口存储值不唯一,有序(插入顺序)的对象
- Set:接口存储值唯一,无序的对象
- Map:接口存储值一组键值对象,提供键(Key)到值(Value)的映射