容器
用来容纳和管理数据。比如新闻网站的新闻列表等等就是用“容器”来管理的。
数组就是一种容器,可以在其中放置对象或者基本数据类型。
数组的优势:是一种简单的线性序列,可以快速地访问数组元素,效率高。
数组的劣势:不灵活。容量需要事先定义好,不能随着需求的变化而扩容。
基于数组并不能满足对管理和组织数据的需求,所以需要更强大,更灵活,容量可以随时扩容的容器来装载对象,即容器(collection),也称之为集合。
容器结构
单例集合,将数据一个一个的进行存储。有一个根接口Collection,定义了单例接口的一些基本行为(抽象方法),Collection接口下有两个子接口,分别是List接口和Set接口,进一步定义了单例集合的存储特征,两个子接口都有自己的实现类(ArrayList类,LinkedList类,HashSet类)
双例集合,指数据存储时要求数据的特征必须具备key和value的结构。双例集合中只有一个接口Map,其中定义了双例集合的一些基本行为,接着是其他的接口实现类来进一步实现。
注:Map接口并不是Collection接口的一个子接口,因为这两接口定义的存储方式不同。
单例集合
将数据一个一个的进行存储
Collection接口的子接口
List接口:
存储有序、可重复、“动态数组”
Set接口:
存储无序、不可重复、数学中的“集合”
双例集合
基于Key与Value的结构存储数据,数学中的函数,一个Key对应一个Value
单例集合的使用
Collection接口介绍
Collection是单例集合根接口,子接口为List接口和Set接口
方法 | 说明 |
---|---|
boolean add(Object element) | 增加元素到容器中 |
boolean remove(Object element) | 从容器中移除元素 |
boolean contains(Object element) | 容器中是否包含该元素 |
int size() | 容器中元素的数量 |
boolean isEmpty() | 容器是否为空 |
void clear() | 清空容器中所有元素 |
Iterator iterator() | 获得迭代器,用于遍历所有元素 |
boolean containsAll(Collection c) | 本容器是否包含c容器中的所有元素 |
boolean addAll(Colection c) | 将容器c中所有元素增加到本容器 |
boolean removeAll(Collection c) | 移除本容器和容器c中都包含的元素 |
boolean retainAll(Collection c) | 取本容器和容器c中都包含的元素,移除非交集元素 |
Object[] toArray() | 转化成Object数组 |
由于List,Set是Collection的子接口,意味着所有List,Set的实现类都有上面的方法。