JCF(Java Collections Framework)即Java中运用最为广泛的Java集合类,它是Java对常用数据结构的封装,包含于java.util包中。所谓集合就是在类内部对数据进行组织的载体,Java API提供了一系列类的实例,用来在程序中存放对象,Java集合将接口和实现进行了分离。其接口与类的结构如下:
JCF接口结构
Iterable
|__Collection
|__List
|__Set
|__SortedSet
|__Queue
Map
|__SortedMap
Iterator
|__ListIterator
RandomAccess
JCF类的结构
AbstractCollection
|__AbstractList
|__AbstractSequentialList
|__LinkedList
|__ArrayList
|__AbstractSet
|__HashSet
|__TreeSet
|__AbstractQueue
|__PriorityQueue
AbstractMap
|__HashMap
|__TreeMap
由上述结构我们可以看出,整个Java集合类中主要包括了三个类型:集合(Set)、列表(List)和映射(Map)
集合:可形象的理解为是一个袋子,里面放的是一个个对象,它的无序且没有重复的;
列表:可理解为是串在一条绳上的蚂蚱,排列有一定的顺序且元素可重复;
映射:可理解为是一张n行两列的表,由一个键值对组成,其中key值不能重复
不过在实际运用中,我们有时也需要进行对集合中的元素进行排序输出,或直接定位一个元素等操作,因而也就出现了实现了这三个接口的Java中的常用集合类
1.ArrayList
ArrayList是Java中最为常用也是最为重要的一个类。它实现了一个大小可变的数组,我们知道在Java中数组的长度一旦声明就无法进行更改,因而对于一些不可预知长度的数组声明就变得非常麻烦,空间小了则无法存储后来添加的数据,空间大了则浪费资源。ArrayList的出现无疑给这种话麻烦画上了一个句号,它可以随着数据量的增长由Java内部机制自动地调整数组容量,做到资源的合理分配
2.LinkedList
LinkedList实现了数据结构中的链表(包括单向和双向链表),它通过前驱与后继结点将一系列元素有序的链接在一起,可以在任何位置高效地插入和删除元素
3.HashSet
HashSet就是一个可以快速定位到某个元素的集合,其集合内部元素是根据元素的散列码存放的,因而能够进行快速定位,要求其中的元素都覆写了hashCode方法
4.TreeSet
TreeSet是一个对中元素进行过排序的集合,要求其中的元素都实现了Comparable接口并覆写compareTo方法
5.EnumSet
EnumSet是一个只包含枚举类型的集合
6.LinkedHashSet
LinkedHashSet是一个可以记住元素被插入顺序的集合
7.PriorityQueue
PriorityQueue是一个可以高效的移除最小元素的集合
8.HashMap
HashMap是一中通过散列码存储键值关联的数据结构
9.TreeMap
TreeMap存储键值有序的Map集合
10.EnumMap
EnumMap存储键值属于枚举型的Map集合