JDK集合框架结构分析(二)

本文介绍了Java集合框架的主要组成部分,包括Map和Set接口及其具体实现类如HashMap、TreeMap、HashSet和TreeSet等,并概述了PriorityQueue的数据结构。

集合框架结构分析02

在学习之前最好有 泛型、泛型协变性 方面的知识

Map接口:

1114580-20170625135825320-1254206463.png

这里需要的是这里的 Map 接口中定义了一个Entry 接口 (接口中内定义接口 是允许的)

Map接口一个抽象类实现 AbstractMap:

1114580-20170625140130991-504846543.png

这个抽象类中 添加了一些新的方法同时提供了两个 Entry 接口的实现 一个是SimpleEntry一个是SimpleImmutableEntry 后者表示 不可变的 不支持setValue方法

接口 SortMap继承自 Map接口:

1114580-20170625141620054-2123458373.png

SortedMap 扩展了Map 定义了一些其他的方法

接口 NavigableMap 继承自 SortedMap (Navigable表示 可操纵的):

1114580-20170625141950460-1463793162.png

NavigableMap 继续扩展了 SortedMap

接下来就是 第一个Map类的介绍:TreeMap:

1114580-20170625142933491-1704227396.png

这个类的方法、实现结构 很复杂:

1114580-20170625143021179-691457471.png

它的 Entry类是 一个 红黑树结构(某种平衡二叉树) 这里只介绍不深入讲解

HashMap 类介绍:

1114580-20170625144327976-1168578853.png

Java中的 Hash结构的实现是使用的是 分离链接法

这个类的实现也是很复杂,这个类的 Entry 接口实现类是一个链表的数据结构

HashMap 中的 hash 算法:

1114580-20170625150836757-2079704237.png

由于Set的底层实现方式是使用Map,所以Set也归类到Map这里讲述

SET 接口继承自Collection

1114580-20170702214609336-118479836.png

SET提供一个抽象类实现:AbstractSet:

1114580-20170702214736727-1067729423.png

SortedSet接口 继承自Set接口:

1114580-20170702215143289-263877515.png

NavigableSet接口 继承自SortedSet接口:

1114580-20170702215333133-1146391583.png

介绍第一个Set类:TreeSet:

1114580-20170702215447774-895891056.png

TreeSet 其实是由一个TreeMap实现的:

1114580-20170702215711633-1511761679.png

HashSet 介绍的第二个Set类:

1114580-20170702215957336-110171148.png

这个类其实是由HashMap实现的

1114580-20170702220116071-646272613.png

最后介绍一个 优先队列:PriorityQueue

1114580-20170702220336743-731875690.png

它 使用一种 二叉堆 数据结构(一种完全二叉树,任意根节点小于它的所有后裔)

到此为止 java中 所有的基本数据结构都介绍完,接下来每个数据结构深入剖析。

转载于:https://www.cnblogs.com/joeCqupt/p/7107478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值