集合(Collections):也常被叫做容器(Container),是一种将多个元素聚合起来组成一个单元的对象。它常常用来储存、检索、操作聚合的数据。
Java Collections Framework包含以下3个要素: 1.接口 使用抽象的数据类型来表示集合,使集合的操作具有数据独立性,不和特定的数据类型相关 2.实现 实现了接口的定义,可复用的数据结构 3.算法 算法是高效的可复用的功能单元,比如排序、搜索等。同时,算法又具有多态性,同一个算法可以被同一接口的不同实现进行调用。 从接口开始,来观察一下Collections的结构。 接口 核心的Collections接口封装了不同的集合类型,如下图所示: ![]() 这些集合的接口,给予我们在处理集合时忽略特定数据类型的能力。同时,它也是java 集合框架的基础。应当注意,Map并不Collection. 所有的集合接口的声明,都是泛型的,例如: public interface Collection<E>...... 而当你需要一个Collection的实例时,你需要使用特定的对象类型(String Integer 或者你自定义的对象)来替换E,以此来通知编译器在编译时将对象绑定。 为了确保Java Collections Interface的可维护性,Java平台并没有提供为每一种接口提供一些特殊需求的变种(这些变种可能包括不可更改的集合、固定长度的集合、只能添加的集合等)。Java平台的做法是,接口中定义的所有操作都被设计成可选的。一个接口的实现允许不支持接口中的方法。当调用一个没有被实现的操作时,则会抛出UnsupportedOperationException异常。 下面是对核心接口的一些描述: ·Collection 是集合体系架构的根,定义了所有集合最基本的操作。但是Java平台并没有给出此接口的具体实现,因为不同的接口有不同的需求,所以,平台实现的是继承此接口的其它子接口,如List Queue等。 ·Set 一种不能包含重复元素的集合,是对数学中的集合概念的建模。 ·List 一个有序集合,有时也被称作序列(sequence)。使用List,一般要对插入、访问进行成本控制。 ·Queue 一个用来容纳具有处理优先级的元素的集合,除了具备基本的集合操外,还实现了一些特殊的插入、弹出及检查操作。 队列是典型的以FIFO处理数据的数据类型,但是,这并不是唯一的选择。除此之外,还有优先级队列等。队列根据实现提供的comparator或者元素的自然序列排列。每一种队列的实现都有自己的元素排列方式。 ·Map Map是一种将key与value相关联的数据结构。不能包含重复的key,每一个key最多只能与一个value关联。 最后两种接口其实是Set与Map的sorted版本。包含了一些特殊的方法,按照升序来排列元素。 |
|