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

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

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

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

1ac8d4d62a0801da4c54d3ace262caea.png

4cb333fcc616be368c9a1d786d89d0d6.png

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

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

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

先看下面一张图

96dbfcade279b5ec24f9f6ca174c8c52.png

这就是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都是对集合进行操作的工具类,里面封装了许多实用的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值