Java Collection Framework 之集合概述
2014-04-12 12:25
302 查看
Java集合框架是一套用于处理集合元素的工具。它位于java.util包一下,由两个基本接口组成:Collection<E>,和
Map<K,V>。
下面简单的介绍下Collection<E>接口。
注:这部分把焦点放在对集合接口概念层的描述,不会涉及具体的实现,只是简单的将每个接口作为一个功能集合来看待,初步的理解各接口所需完成的任务。
Collection<E>接口抽象出一个容器。
该容器有以下特点:
1、 具有添加一个或一组元素的功能(add()与addAll()方法)。
2、 具有移除全部,一个或一组元素的功能(clear(),remove()和removeAll()方法)。
3、 具有判断指定一个或一组元素是否存在于集合中的功能(contain()和containAll()方法)。
4、 能够返回容器中现有元素数量和判断容器是否为空的功能(size()和isEmpty()方法)。
5、 能够使客户遍历容器中全部元素的功能(iterator()和toArray()方法)。
下面是Collection<E>层次结构图,其中只列出了比较关键的接口,一旦某个类实现了其中的接口,该类将会拥有该接口定义的功能。
Collection<E>有三个常用子接口
Set<E>、List<E>、Queue<E>。
Set<E>接口:
从逻辑上来说Set<E>接口所定义的功能和Collection<E>并没有太大差别,自己也没有比Collection<E>定义额外的方法,唯一的区别是在Set<E>的实现过程中应当确保他当中的集合元素不能够重复(对重复的判断规则可能根据具体实现类有所不同)。SortedSet<E>接口:
该接口为Set<E>集合添加了排序的功能,使得SortedSet<E>有了基于排序的特性。1、获得在排序中的第一个和最后一个元素(first()和last()方法)。
2、 截取子SortedSet(subSet()和tailSet()方法)。
PS1:SortedSet虽然提供了元素的排序但是却不提供对元素的索引(不具有按索引访问元素的能力)。
PS2:SortedSet在排序时需要用到比较方法。因此作为SortedSet的元素需要实现Comparable接口,该接口只有一个方法comparTo(T o)方法。实现该方法 应遵循这样的规则,当this大于o返回1,相等返回0,this小于o返回0(简单记忆就是this-0的值决定1的正负)。
PS3:SortedSet的排序默认是升序的,如果要实现定制的排序方案,在各实现类中会提供相应的构造方法。
NavigableSet<E>接口:
NavigableSet接口扩展了SortedSet的功能,使得Set利用已排好的元素实现更多的功能:1、 逆序操作,比如descendingIterator()返回一个逆序遍历的工具,比如descendingSet()返回一个逆序的NavigableSet对象。
2、 扩展的截取功能,比如截取特定元素之前,之后的元素。
3、 寻找特定元素的前一个(lower()),后一个(higher())元素。
List<E>接口:
List<E>接口规定了一个其中元素有规定逻辑顺序的容器,该容器中的元素可以重复。List<E>容器在继承了Collection<E>容器的基本功能基础之上还添加了一些额 外的功能(这些功能是基于List的顺序结构之上的,因此基本与索引有关):1、 按索引来访问容器中的元素(get()方法)。
2、 寻找在特定索引处的元素(indexOf()方法)。
3、 截取子队列(subList()方法)。
4、 扩展的添加元素的功能,支持在特定索引处添加元素或一组元素。
Queue<E>接口:
该接口给Collection中的添加删除元素的功能做了一些限制,同时在Queue中元素之间是有先后的排序关系(具体的关系根据实现类会有所不同)。添加元素只能添加在逻辑顺序的队尾,删除元素只能删除逻辑顺序的队头。(逻辑上的顺序因实现类的不同会有所差别)。
1、 队头添加(add()和offer()方法)。
2、 获得队头元素(element(),peek(),poll()和remove()方法)。
Deque<E>接口:
该接口扩展了Queue的功能,使得其能够在逻辑顺序的队头队尾都有插入和删除的功能。同时如果用户,只利用该集合的一端(比如所队头),只限制在一端进行插入与删除,将会实现栈的功能(先进后出)。该接口的方法命名,部分是在Queue的基础上加上First或者Last后缀。
并抽象出了栈的操作(push()和pop())虽然该功能可以通过其他Deque的方法实现,但当你是想将该接口作为栈使用,还是使用这两个操作。
在最后:
这个层次结构图中,基本上定义了集合框架中集合有关类的全部功能,只不过在具体类的实现中,可能存在对这些接口所定义功能的不同解释,但从逻辑概念上来说,java库中的集合都是严格按照这些定义所设计的,具体的使用方法,参见API。相关文章推荐
- Collection 集合框架 体系概述 java
- Java基础知识强化之集合框架笔记03:Collection集合的功能概述
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- 关于java集合框架collection概述
- Java中Collection集合概述
- Java基础知识强化之集合框架笔记68:Collections类概述和成员方法(备注:Collection 和 Collections区别)
- 【我的Java笔记】Collection集合的概述 & List
- Java集合概述集Collection 和 Iterator 接口用法详解
- Java 集合系列02之 Collection架构
- Java 数序和集合框架的转化 & Collection.sort()方法排序的两种方式
- Java学习日记(九)Collection、泛型、Map集合、Collections&Arrays、增强for语句、可变参数、静态导入
- java学习初探十三之集合Collection常用方法
- 关键字: java 集合框架 collection, arraylist, hashmap
- Java集合Collection、List、Set、Map使用详解
- java中集合Collection和Map接口的实现类
- Lesson_for_java_day13--java中的集合——Collection、List、ArrayList、LinkedList、Set、HashSet、TreeSet
- Java 集合框架之Collection
- Java中集合(一)Collection 、List<E> 、ArrayList<E>
- Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
- java基础--32.集合框架 Collection