JDK集合框架结构分析(二)
集合框架结构分析02
在学习之前最好有 泛型、泛型协变性 方面的知识
Map接口:
这里需要的是这里的 Map 接口中定义了一个Entry 接口 (接口中内定义接口 是允许的)
Map接口一个抽象类实现 AbstractMap:
这个抽象类中 添加了一些新的方法同时提供了两个 Entry 接口的实现 一个是SimpleEntry一个是SimpleImmutableEntry 后者表示 不可变的 不支持setValue方法
接口 SortMap继承自 Map接口:
SortedMap 扩展了Map 定义了一些其他的方法
接口 NavigableMap 继承自 SortedMap (Navigable表示 可操纵的):
NavigableMap 继续扩展了 SortedMap
接下来就是 第一个Map类的介绍:TreeMap:
这个类的方法、实现结构 很复杂:
它的 Entry类是 一个 红黑树结构(某种平衡二叉树) 这里只介绍不深入讲解
HashMap 类介绍:
Java中的 Hash结构的实现是使用的是 分离链接法
这个类的实现也是很复杂,这个类的 Entry 接口实现类是一个链表的数据结构
HashMap 中的 hash 算法:
由于Set的底层实现方式是使用Map,所以Set也归类到Map这里讲述
SET 接口继承自Collection
SET提供一个抽象类实现:AbstractSet:
SortedSet接口 继承自Set接口:
NavigableSet接口 继承自SortedSet接口:
介绍第一个Set类:TreeSet:
TreeSet 其实是由一个TreeMap实现的:
HashSet 介绍的第二个Set类:
这个类其实是由HashMap实现的
最后介绍一个 优先队列:PriorityQueue
它 使用一种 二叉堆 数据结构(一种完全二叉树,任意根节点小于它的所有后裔)
到此为止 java中 所有的基本数据结构都介绍完,接下来每个数据结构深入剖析。
转载于:https://www.cnblogs.com/joeCqupt/p/7107478.html
JDK集合框架结构分析(二)相关推荐
- java集合框架(二):HashTable
2019独角兽企业重金招聘Python工程师标准>>> HashTable作为集合框架中的一员,现在是很少使用了,一般都是在面试中会问到其与HashMap的区别.为了能在求职的时候用 ...
- 黑马程序员——JavaSE之集合框架总结二
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一次对整个集合框架中全部包含的内容作了笼统的概念性的解释,这次只针对其中常用的几个集合进行仔细 ...
- Java 集合框架(二)—— ArrayList
二.数组列表 -- ArrayList 1.构造方法 ArrayList 是 Java 中的动态数组,底层实现就是对象数组,只不过数组的容量会根据情况来改变. 它有个带 int 类型参数的构造方法,根 ...
- 黑马程序员——集合框架(二)
----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ package com.yang.ex; /*------Set:不包含重复 ...
- Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- Java修炼之道--集合框架
原作地址:https://github.com/frank-lam/2019_campus_apply 前言 Java集合框架 (Java Collections Framework, JCF) 也称 ...
- Java集合框架之fastutil
fastutil扩展了 Java集合框架,通过提供特定类型的map.set.list和queue,以及小内存占用.快速访问和插入:也提供大(64位)array.set 和 list,以及快速.实用的 ...
- J2EE基础之map集合框架
目录 一.map集合框架特点 二.遍历方式 三.常用实现类HashMap 四.泛型 五.集合框架工具类( Collections和 Arrays ) 等等先别急,先了解一下什么是Map集合? Map是 ...
- java集合框架图(二)
目录 前言 一.list与Set.Map 区别及适用场景 二.ArrayList与LinkedList的区别和适用场景 三.ArrayList与Vector的区别和适用场景 四.HashSet与Tre ...
最新文章
- 史上最全的Chrome使用技巧集锦
- Zookeeper的Windows安装
- Linux系统灾难恢复技术和方法-[3]
- 銷售訂單 (Sales Order): 資料表及更新記錄
- cpu功耗排行_2020 主流手机处理器排行榜
- 缓存-SpringCache-原理与不足
- wkhtmltopd 下载安装以及php环境下的使用
- 最近找工作的面试经历
- matlab区分卷积和相关
- 贪吃蛇python语言代码_Python贪吃蛇简单的代码
- 如何为MindManager时间表思维导图添加春节假期?
- 京瓷1020怎么打印自检页_惠普打印机怎样打印测试页
- 5V升压8.4V,锂电池充电管理芯片
- 关于nodebb中ns-custom-fields插件的使用
- git commit三种回退的方式
- egret 实战教程之跳一跳(一)
- 用Java输出100内的质数和合数(包含100)
- iOS 中的渲染框架:CALayer 是显示的基础,存储 bitmap
- choose when otherwise,otherwise不起作用
- 产线数字化软件源码_软件生产线技术、开源软件声明、源码下载地址