单列集合
集合框架
1.Java类中集合的关系图
2.集合的概述
- 在程序中可以通过数组来保存多个对象,但在某些情况下开发人员无法预先确定需要保存对象的个数,此时数组将不再适用,因为数组的长度不可变。
- 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。
数组和集合类同是容器,有何不同?
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
3.Collection接口概述
-
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。
-
Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
4. Collection接口成员方法
4.1 添加功能
方法声明 | 功能描述 |
---|---|
add() | 添加元素 |
addAll() | 添加一个集合的元素 |
4.2 删除功能
方法声明 | 功能描述 |
---|---|
remove() | 删除元素 |
removeAll() | 删除一个集合的元素 |
clear() | 清空集合 |
4.3 判断功能
方法声明 | 功能描述 |
---|---|
contains() | 判断集合是否包含指定的元素 |
containsAll() | 判断一个集合是否包含一个集合的元素 |
isEmpty() | 判断集合是否为空 |
4.4 获取功能
方法声明 | 功能描述 |
---|---|
size() | 获取集合的长度 |
retainAll() | 取两个集合的交集 |
4.5 其他功能
方法声明 | 功能描述 |
---|---|
toArray() | 把集合转成数组,可以实现集合的遍历 |
iterator() | 迭代器,集合的专用遍历方式 |
5. List接口概述
-
有序的 collection(也称为序列/线性表)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。
-
List接口是Collection接口的一个子接口,List集合的特性是:有序,可重复,元素有索引,List接口有三个实现类
- ArrayList:底层数据结构是数组,查询快,增删慢,非线程安全,效率高,数据增长为原来的50%
- Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,数据增长为原来的一倍
- LinkedList:底层数据结构是链表,查询慢,增删快,非线程安全,效率高
5.1 Vector
底层数据结构是数组,查询快,增删慢,线程安全,效率低。
Vector类特有功能
- public void addElement(E obj):添加元素
- public E elementAt(int index):根据索引获取元素
- public Enumeration elements():获取所有的元素
5.2 ArrayList
底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
5.3 LinkedList
与ArrayList基于数组结构不同的是,LinkedList是基于链表的结构,因此具有链表特有的功能
方法声明 | 功能描述 |
---|---|
addFirst() | 在集合的第0个位置添加元素 |
addLast() | 在集合的最后位置添加元素 |
getFirst() | 获取集合的第0个元素 |
getLast() | 获取集合的最后一个元素 |
removeFirst() | 删除集合的第0个元素 |
removeLast() | 删除集合的最后一个元素 |