图解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的实现类进行详细介绍。
- 图解Java之一——Collection
- Java容器——Collection
- java基础——Collection
- Java Container——Collection
- Java——Collection接口
- Java - Collection——HashMap
- Java集合—Collection篇
- 发光二极管之一——工作原理图解分析
- JAVA中常用的Map和Collection数据结构图解
- Java基础日记———Collection
- Java基础——集合(一)Collection
- java基础<集合框架——Collection>
- 黑马程序员——Java集合Collection
- 黑马程序员——Java Collection集合
- java基础学习笔记——collection
- Java基础——集合Collection
- Java基础——Collection接口
- java collection——源码分析
- Jquery动态增加行和删除行并封装成list表单提交
- C++操作MySQL大量数据插入效率低下的解决方法
- Mysql数据库操作(五)----约束
- centos7 mysql数据库安装和配置
- 欢迎使用CSDN-markdown编辑器
- 图解Java之一——Collection
- C#中Bitmap类实现对图像操作的一些方法(转)
- 学习经历
- 原生生成条形码 二维码 (生成 读取 动画 仿淘宝动画)
- 201403-1 相反数
- oracle表管理(四)
- 动态规划求取C(n,m)
- c3p0-config.xml 里边内容的配置
- 剑指offer--(7) 斐波那契数列