1、写在前面
大家好,今天文章的内容是:
- 集合框架
2、集合框架
2.1、简述
什么是集合框架?
在数学中,集合一般被定义为:由一个或多个确定的元素所构成的整体。而在Java中,集合就是可以将多个对象收集到一起,并作为一个对象而存储的容器。
由于集合框架的设计必须是高性能的,允许不同类型的集合存在,并且扩展性高的。因此Java使用了标准接口来设计集合框架,我们可以直接使用这些接口的标准实现,也可以通过接口来实现自己的集合类。
总的来说,Java集合框架提供了若干现成的数据结构以及算法,便于我们使用。也就是说,集合框架属于一套统一的体系结构,具体内容包括集合接口、接口的实现以及一系列操作集合的算法。
备注:
- 集合接口:具有层次结构的抽象数据类型(ADT),它将操作和表示分离开。之所以定义多个接口,是为了以不同的方式操作集合对象
- 集合实现:指的是集合接口的具体实现,属于可重用的数据结构。
- 算法:对集合中的元素进行若干操作的对应算法,如排序、查找等。
另外,从Java5开始,集合框架就已经全部采用泛型实现了。而上述我们提到的集合接口以及类都是在java.util
包中。
2.2、常用接口
(1)介绍
具体来说,Java集合框架中的常用接口包括:
Collection
:存储若干数据元素的集合。Map
:存储有映射关系元素的集合。
其中Collection
又包含了三种常用的子接口:List
、Set
以及Queue
。
(2)主要接口
Collection接口
Collection
是最基本的集合接口,用于存储一组不唯一,无序的对象。
注意:
- Java不提供直接继承自
Collection
的类,只提供继承于Collection
的子接口,比如List
和set
等。 Collection
声明时一个使用泛型,比如Collection<T>
。
Set接口
Set
接口扩展了Collection
接口,并且禁止重复的元素。也就是说,Set
不保存重复的元素,是一个不包含重复元素的集合。
注意:
- 实现
Set
接口的两个主要类是HashSet
和TreeSet
Set
接口在声明时也应该使用泛型,即Set<T>
- 有一种特殊的Set接口是
SortedSet
接口,其中的元素是有序排列的,并且增加了与次序相关的操作。实现SortedSet
接口的主要类是TreeSet
,SortedSet
接口在声明时也是一样使用泛型,即SortedSet<T>
List
接口
List
接口是一个有序集合,其中的数据元素是按照有序排列的,并且可以重复。使用该接口能够准确控制数据元素的位置,List
中的每个元素都有一个索引值,从零开始,用于表示元素在List
中的位置。我们可以通过索引值来访问List
中的元素。
注意:
- 实现
List
接口的两个主要类是ArrayList
、LinkedList
等 List
接口在声明时应使用泛型,即List<T>
Queue接口
Queue
接口也是一类比较经典的集合,是Java提供的队列实现。队列中的元素按照先进先出的规则进行存取,即新元素在队尾添加,并且只能从队列的头部进行移除元素。Queue
接口在声明时应使用泛型,即Queue<T>
Deque接口
Deque
接口继承自Queue
接口,是一个双向队列,它支持从队列的头、尾两端对数据元素进行插入、移除等操作。Deque
接口的这种双向特性使得它可以作为栈集合(先进后出)来使用。Deque
接口在声明时应使用泛型,即Deque<T>
Map接口
Map
接口是一个映射表集合,其存储的每个元素都是一对,以键值对(key➡value)的形式保存。Map
中不能有重复的关键字,并且每个关键字最多只能映射到一个值。当我们需要通过关键字来实现对值的快速存取,那么最好的选择是Map
。
备注:
Map
接口在声明时应使用泛型,即Map<K, T>
。其中K
表示关键字,T
表示Map
中元素的数据类型。- 另外,
SortedMap
接口是一种特殊的Map
接口,继承于Map
,使Key
保持在升序排列。 SortedMap
接口在声明时应使用泛型,即SortedMap<K, T>
。其中K
表示关键字,T
表示Map
中元素的数据类型。
2.3、常用类
常用类 | 说明 |
---|---|
ArrayList |
该类是实现了List 接口的具体类,可存储任意类型的对象,其容量可根据需要自动扩充,在随机访问和遍历元素时效率较高 |
LinkedList |
该类通过双向链表数据结构实现了List 和Deque 接口,应用场景较为广泛。可将该类当做栈或者队列来使用,但查找效率较低 |
HsahMap |
该类实现了Map 接口,按照键的HashCode 值来存储键对象,访问速度较快,不支持线程同步。 |
HashSet |
该类是Set 接口的典型实现,是无序且无重复元素的集合,其底层使用HashMap 来保存所有元素,查询速度较快,但注意,HashSet 不是线程安全的 |
TreeSet |
该类实现了Set 接口,实现了有序的Set |
ArrayDueue |
是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素 |
TreeMap |
继承了AbstractMap ,使用了一棵树,可对键对象进行排序 |
3、写在最后
好了,文章的内容就到这里,感谢观看。