集合框架使我们开发应用时不可缺少的工具,首先我们要明白,集合是什么?
集合代表了一组具有共同属性的对象,集合框架则定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦,为我们提供了囊括全部集合接口、实现和算法。
- 集合框架体系
集合框架总体上分为了两大块:Collection和Map,jdk为我们提供了这两个基本的接口,所有的集合实现类都基于它们。 - Collection:它提供了对集合对象进行基本操作的通用接口方法
先来看一下jdk源码中的介绍;
* The root interface in the <i>collection hierarchy</i>. A collection
* represents a group of objects, known as its <i>elements</i>. Some
* collections allow duplicate elements and others do not. Some are ordered
* and others unordered. The JDK does not provide any <i>direct</i>
* implementations of this interface: it provides implementations of more
* specific subinterfaces like <tt>Set</tt> and <tt>List</tt>. This interface
* is typically used to pass collections around and manipulate them where
* maximum generality is desired.
*
* <p><i>Bags</i> or <i>multisets</i> (unordered collections that may contain
* duplicate elements) should implement this interface directly
集合框架的根接口,集合是一组对象的表示(对象叫做元素),一些集合实现允许重复元素,一些不允许,一些有序......JDK没有提供这个接口的任何直接实现,而是提供了更多细节性的接口(也就是具体化的接口,例如List),这个接口传递集合类给Collections(集合操作的工具类),用来为各种具体的集合提供最大化的统一操作方式。
- Collections:一个包装类(工具类/帮助类)。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。
简而言之:假设集合是一个微型数据库(不同类型),Collection则为我们提供CRUD的通用接口方法
我们来看一张Collection的简易体系图
- Collection接口主要有三个子接口:
- List:List表示允许有重复元素的集合(An ordered collection (also known as a sequence))
- Set:Set表示不允许有重复元素的集合(A collection that contains no duplicate elements)
- Queue:Queue主要用于存储数据,而不是处理数据。(A collection designed for holding elements prior to processing.)
- Java8新增接口方法:(在后续文章中会详细介绍)
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
-
Map:表示一组key-value对
Map并不是一个真正意义上的集合(are not true collections),但是这个接口提供了三种“集合视角”(collection views ),使得可以像操作集合一样操作它们,具体如下:
- key的集合: map's contents to be viewed as a set of keys
- value的集合:map’s contents to be viewed as a collection of value
- key-value映射(Entry)的集合:map’s contents to be viewed as a set of key-value mappings
- Collections : 集合操作类
它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。