Java集合框架分析(一)——总体概述

                                            Java集合框架分析(一)——总体概述

 

   集合框架大家肯定都用过,但是什么事集合框架?他是基于什么数据结构?每个方法都实现了吗?相信很多人没有深入研究过,因为搞云计算要分析hadoop源码,就把java又重头复习了一遍,集合框架这部分我觉得有必要深入研究下。

好了不说废话直接开始。首先集合框架都在java的util包下,先截个API的图看下

 


 
 

这是util包下的部分截图,这是java的工具库类包,包含集合 框架、遗留的 collection 类、事件模型、 日期和 时间设施、 国际化和各种实用 工具类(字符串标记生成器、随机数生成器和位 数组、日期Date类、堆栈Stack类、向量Vector类等)。当然我就其中的集合框架来分析。

 

首先回到最初的一个问题,为什么要出现集合类?

   

我想在面向对象语言中所有的体现都是以对象来体现的,为了方便对多个对象的操作,就要对对象进行储存,而集合就是储存对象的最常见的一种方式。这么说来集合就是一种数组的容器。那么这个角度看数组和集合有什么区别呢?我想第一就是数组长度是固定的但是集合石可变的,第二数组储存的是基本数据类型,集合储存的是对象。

 

先看下面一张图



  

这就是java种集合的简单大体关系图,我们从顶层容器开始分析,首先肯定是Collection,这是典型的存储对象的集合,他是一个顶层接口,往下大体分为List和Set两部分,另一边和Collection有同样地位的还有一个Map接口,简单来说这是一个键值对的映射。由Collection还可以看到他继承了Iterator接口,这是一个迭代器,用来取出集合中的元素。右下角还可以看到像Collections,Arrays等实现类,这是集合的工具类。所以总的来说java的集合框架分为这么几个部分:

Collection集合,Map映射,工具类(Iterator迭代器,Arrays和Collections

再将Collection集合细分的话总的分为以下四个方面:

List列表Set集合Map映射工具类(Iterator迭代器、Arrays和Collections)。

 

这样一来条理就清晰了,最主要的就是Collection和Map。

1.上面我们说到Collection有两大分支:

   (1)List:元素是有序的并且元素可以重复,因为该集合体系有索引。

       实现类有LinkedList, ArrayList, Vector

   (2)Set:元素是无序的(存入和取出的顺序不一致),元素不可以重复        

        实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

2.再看Map,这是一个映射接口,就是key-value键值对,主要有这么几个实现类:

Hashtable,HashMap,TreeMap,WeakHashMap。

>3.最后看工具类:

     最重要的就是Iterator,这是一个迭代器,就是用来遍历集合的工具,从上面的图中可以看到Collection依赖于这个迭代器,因为集合取出元素都要通过它。他通过一个对外提供的iterator()方法来实现,注意的是Iterator返回的是一个对象。

     之后的Collections和Arrays都是对集合进行操作的工具类,里面封装了许多实用的方法。

 

 

 

猜你喜欢

转载自linhaoxiang.iteye.com/blog/2056422