图解Java之一——Collection

来源:互联网 发布:igraph python 编辑:程序博客网 时间:2024/05/21 06:36

        JDK1.2引入了一套设计优良的类集框架——Collection,这些接口提供了批量管理对象的API,并可以通过这些API实现队列、栈、字典和线程安全的集合等,大大方便了开发。本文首先从该类集框架的整体结构进行分析。

1. Collection继承结构

        Collection框架定义的所有类和结构都放在JDK的java.util包下,图1表示了Collection集合框架的类继承结构。由图可知,Collection框架虽然实现众多,但是其层次清晰,结构明了,学习起来并不复杂。


图1 Collection集合框架类继承结构

        在Collection框架中,所有接口和类都实现了一个统一的结构Collection,一个Collection就代表了一组对象。Collection的实现主要分为三大类:Set、List和Queue,其中Set是一类不包含重复元素的集合,List则是一类可以包含重复元素的集合,而Queue则是一种队列的实现。

        Set类的主要实现类有TreeSet和HashSet,其中TreeSet中的元素是有序的,HashSet中的元素是无序的;List的主要实现类有Vector、ArrayList、LinkedList,其中Vector和ArrayList中元素是基于动态数组实现的,而LinkedList是基于链表实现的;Queue的主要实现类是PriorityQueue,实现了一种优先级Queue,而在java.util.concurrent包下还有另一种BlockingQueue实现,会在以后进行介绍。另外,Collection还基于Vector实现了一种表示栈数据结构的Stack类。

2. Collection接口

        在Collection接口中,所有接口和类的最上层都实现了Collection接口,只有实现了Collection接口才表示该类可以表示类的集合。图2描述了Collection接口中的所有方法。


图2 Collection接口方法

        Collection接口中定义的所有接口方法大致可分为以下五类:

        1、基本操作方法:包括获取集合大小的size()方法、判断集合是否为空的isEmpty()方法、清空集合的clear()方法以及equals()和hashcode()方法。

        2、判断是否包含某元素的方法:包含判断是否包含单一元素和包含某一集合的所有元素的方法。

        3、添加元素:包含添加一个元素和一个集合的所有元素。

        4、删除元素:包含删除一个元素和一个集合的所有元素。

        5、将集合转化为数组的方法:包含将集合转化为Object类型数组和特定类型数组。

        Collection中还包含了一个iterator()方法可以为每个集合类型生成对应的迭代器,以便对集合进行迭代遍历。

        在JDK1.8中,接口引入了default方法,添加默认方法可以使得在接口中添加新方法的同时不破坏现有的实现架构。在Collection接口中也定义了四个类似的default方法以适应JDK1.8新特性——流和函数式编程:

        removeIf()方法:该方法传入一个Predicate的lamda表达式,可以根据lamda表达式中的过滤条件删除集合中的元素。

        spliterator()方法:该方法生成一个用于并行遍历的并行迭代器Spliterator。

        stream()和parallelStream()方法:分别生成集合对应的流和并行流,以便集合可以方便的进行流操作。

        

        本文首先对Collection集合框架的结构进行了简单介绍,之后对Collection接口进行了详细的解析。后面将分别对Collection的实现类进行详细介绍。