三十二、Collection集合
1、集合概述
集合就是一种能够存储数据的容器。常见的容器有集合和数组。
集合和数组有什么区别?
- 数组的长度不可变,而集合的长度是可变的
- 数组能存储任意类型的数据。而集合只能存储引用数据类型的数据,但基本数据类型可以转成包装类进行存储
2、集合的体系
集合有两大分类
-
Collection集合(单列集合类)
-
Map集合
2.1 Collection集合继承体系

Collection为顶层接口,在里面定义着单列集合框架中最最共性的内容。
2.2、Collection常用功能
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:
| 方法 | 描述 |
|---|---|
public boolean add(E e) |
把给定的对象添加到当前集合中 。 |
public void clear() |
清空集合中所有的元素。 |
public boolean remove(E e) |
把给定的对象在当前集合中删除。 |
public boolean contains(Object obj) |
判断当前集合中是否包含给定的对象。 |
public boolean isEmpty() |
判断当前集合是否为空。 |
public int size() |
返回集合中元素的个数。 |
public Object[] toArray() |
把集合中的元素,存储到数组中 |
tips: 有关Collection中的方法可不止上面这些,其他方法可以自行查看API学习。
public static void main(String[] args) {
// 创建集合对象 : 多态
Collection<String> c = new ArrayList<>();
// public boolean add(E e): 把给定的对象添加到当前集合中 。
c.add("关羽");
c.add("张飞");
c.add("赵云");
c.add("马超");
c.add("黄忠");
// public void clear() : 清空集合中所有的元素。
// c.clear();
// public boolean remove(E e): 把给定的对象在当前集合中删除。
// System.out.println(c.remove("张飞"));
// public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
// System.out.println(c.contains("姜维"));
// public boolean isEmpty(): 判断当前集合是否为空。
// System.out.println(c.isEmpty());
// public int size(): 返回集合中元素的个数。
// System.out.println(c.size());
// public Object[] toArray(): 把集合中的元素,存储到数组中
Object[] array = c.toArray();
System.out.println(Arrays.toString(array));
System.out.println(c);// [关羽, 张飞, 赵云, 马超, 黄忠]
}
3、List与Set接口
4、各个集合的特点
Collection接口:单列最顶层的接口
- List接口: 1有序 2有索引 3元素可以重复
- ArrayList 类: 数组结构:查询块,增删慢。
- LinkedList类: 链表结构:增删块,查询慢。
- Set 接口: 1无序 2无索引 3元素不可重复(唯一)
- HashSet 类: 哈希表结构:保证元素的唯一。
- LinkedHashSet类: 链表 + 哈希表结构:有序且保证元素唯一。
- TreeSet 类: 红黑树结构:保证元素唯一,对元素快速排序。
因为Collection、Set以及下面的类,没有索引 ;而List是有索引的。所以除了List及下面的类,能用for循环;其他的集合是不能使用for循环的。但他们多能使用 迭代器、增强for
最后提醒:
以后在使用集合的时候,根据开发情况直接创建子类对象就可以了,不需要使用多态。

浙公网安备 33010602011771号