一、容器简介
容器,是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、 箱子和包等。
程序中的“容器”也有类似的功能,用来容纳和管理数据。比如,如下新闻网站的新闻 列表、教育网站的课程列表就是用“容器”来管理:
视频课程信息也是使用“容器”来管理:
开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。我 们一般通过“容器”来容纳和管理数据。事实上,我们前面所学的数组就是一种容器,可以 在其中放置对象或基本类型数据。
数组的优势:是一种简单的线性序列,可以快速地访问数组元素,效率高。如果从效率和类型检查的角度讲,数组是最好的。
数组的劣势:不灵活。容量需要事先定义好,不能随着需求的变化而扩容。比如:我们 在一个用户管理系统中,要把今天注册的所有用户取出来,那么这样的用户有多少个?我们 在写程序时是无法确定的。因此,在这里就不能使用数组。
基于数组并不能满足我们对于“管理和组织数据的需求”,所以我们需要一种更强大、 更灵活、容量随时可扩的容器来装载我们的对象。 这就是我们今天要学习的容器。容器(Collection)也称之为集合。
二、容器的结构
2.1结构图
单例集合:将数组一个一个进行存储
双例集合:基于key-value的结构存储数据
三、单例集合的使用
3.1collection接口介绍
Collection是单例集合根接口,它是集中、收集的意思。collection接口的两个子接口是List、Set接口。
3.2collection接口中的抽象方法
方法 说明 | |
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(Collection c) | 将容器 c 中所有元素增加到本容器(取并集) |
boolean removeAll(Collection c) | 移除本容器和容器 c 中都包含的元素(差集) |
boolean retainAll(Collection c) | 取本容器和容器 c 中都包含的元素,移除非交集元素 |
Object[] toArray() | 转化成 Object 数组 |
由于 List、Set 是 Collection 的子接口,意味着所有 List、Set 的实现类都有上面的方法。我们下一节中,通过 ArrayList 实现类来测试上面的方法。
3.3List接口
3.3.1List接口的特点
有序:有序(元素存入集合的顺序和取出的顺序一致)。List 中每个元素都有索引标记。可以根据元素的索引标记(在 List 中的位置)访问元素,从而精确控制这些元素。
可重复:List 允许加入重复的元素。更确切地讲,List 通常允许满足 e1.equals(e2) 的元素重复加入容器。
3.3.2List的常用方法
除了 Collection 接口中的方法,List 多了一些跟顺序(索引)有关的方法,参见下表:
方法 | 说明 |
void add (int index, Object element) | 在指定位置插入元素,以前元素全部后移一位 |
Object set (int index,Object element) | 修改指定位置的元素 |
Object get (int index) | 返回指定位置的元素 |
Object remove (int index) | 删除指定位置的元素,后面元素全部前移一位 |
int indexOf (Object o) | 返回第一个匹配元素的索引,如果没有该元素, 返回-1. |
int lastIndexOf (Object o) | 返回最后一个匹配元素的索引,如果没有该元 素,返回-1 |
下一篇我将会讲解关于List接口的实现类:ArrayList容器类的具体应用!
Java中的容器类:List接口下的ArrayList、Vector容器类的介绍和使用_程序员不需要码子的博客-CSDN博客
欢迎评论私信我你们遇到的问题,看到后我会第一时间帮你答疑解惑!本文为作者复盘时梳理的知识点内容,三周左右复盘完大学Java学习中的所有内容,届时会设置为仅粉丝可查阅,感兴趣的同学可以关注我哦!也欢迎咨询你遇到的别的问题!