|
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>
<hr/>Queue接口
Queue接口也是一类比较经典的集合,是Java提供的队列实现。队列中的元素按照先进先出的规则进行存取,即新元素在队尾添加,并且只能从队列的头部进行移除元素。Queue接口在声明时应使用泛型,即Queue<T>
<hr/>Deque接口
Deque接口继承自Queue接口,是一个双向队列,它支持从队列的头、尾两端对数据元素进行插入、移除等操作。Deque接口的这种双向特性使得它可以作为栈集合(先进后出)来使用。Deque接口在声明时应使用泛型,即Deque<T>
<hr/>Map接口
Map接口是一个映射表集合,其存储的每个元素都是一对,以键值对(key➡value)的形式保存。Map中不能有重复的关键字,并且每个关键字最多只能映射到一个值。当我们需要通过关键字来实现对值的快速存取,那么最好的选择是Map。
备注:
- Map接口在声明时应使用泛型,即Map<K, T>。其中K表示关键字,T表示Map中元素的数据类型。
- 另外,SortedMap接口是一种特殊的Map接口,继承于Map,使Key保持在升序排列。
- SortedMap接口在声明时应使用泛型,即SortedMap<K, T>。其中K表示关键字,T表示Map中元素的数据类型。
<hr/>2.3、常用类
常用类 | 说明 | ArrayList | 该类是实现了List接口的具体类,可存储任意类型的对象,其容量可根据需要自动扩充,在随机访问和遍历元素时效率较高 | LinkedList | 该类通过双向链表数据结构实现了List和Deque接口,应用场景较为广泛。可将该类当做栈或者队列来使用,但查找效率较低 | HsahMap | 该类实现了Map接口,按照键的HashCode值来存储键对象,访问速度较快,不支持线程同步。 | HashSet | 该类是Set接口的典型实现,是无序且无重复元素的集合,其底层使用HashMap来保存所有元素,查询速度较快,但注意,HashSet不是线程安全的 | TreeSet | 该类实现了Set接口,实现了有序的Set | ArrayDueue | 是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素 | TreeMap | 继承了AbstractMap,使用了一棵树,可对键对象进行排序 | 3、写在最后
好了,文章的内容就到这里,感谢观看。 |
|