集合框架结构分析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集合框架结构分析(二)相关推荐

  1. java集合框架(二):HashTable

    2019独角兽企业重金招聘Python工程师标准>>> HashTable作为集合框架中的一员,现在是很少使用了,一般都是在面试中会问到其与HashMap的区别.为了能在求职的时候用 ...

  2. 黑马程序员——JavaSE之集合框架总结二

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一次对整个集合框架中全部包含的内容作了笼统的概念性的解释,这次只针对其中常用的几个集合进行仔细 ...

  3. Java 集合框架(二)—— ArrayList

    二.数组列表 -- ArrayList 1.构造方法 ArrayList 是 Java 中的动态数组,底层实现就是对象数组,只不过数组的容量会根据情况来改变. 它有个带 int 类型参数的构造方法,根 ...

  4. 黑马程序员——集合框架(二)

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ package com.yang.ex; /*------Set:不包含重复 ...

  5. Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet

    Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...

  6. Java修炼之道--集合框架

    原作地址:https://github.com/frank-lam/2019_campus_apply 前言 Java集合框架 (Java Collections Framework, JCF) 也称 ...

  7. Java集合框架之fastutil

    fastutil扩展了 Java集合框架,通过提供特定类型的map.set.list和queue,以及小内存占用.快速访问和插入:也提供大(64位)array.set 和 list,以及快速.实用的 ...

  8. J2EE基础之map集合框架

    目录 一.map集合框架特点 二.遍历方式 三.常用实现类HashMap 四.泛型 五.集合框架工具类( Collections和 Arrays ) 等等先别急,先了解一下什么是Map集合? Map是 ...

  9. java集合框架图(二)

    目录 前言 一.list与Set.Map 区别及适用场景 二.ArrayList与LinkedList的区别和适用场景 三.ArrayList与Vector的区别和适用场景 四.HashSet与Tre ...

最新文章

  1. 史上最全的Chrome使用技巧集锦
  2. Zookeeper的Windows安装
  3. Linux系统灾难恢复技术和方法-[3]
  4. 銷售訂單 (Sales Order): 資料表及更新記錄
  5. cpu功耗排行_2020 主流手机处理器排行榜
  6. 缓存-SpringCache-原理与不足
  7. wkhtmltopd 下载安装以及php环境下的使用
  8. 最近找工作的面试经历
  9. matlab区分卷积和相关
  10. 贪吃蛇python语言代码_Python贪吃蛇简单的代码
  11. 如何为MindManager时间表思维导图添加春节假期?
  12. 京瓷1020怎么打印自检页_惠普打印机怎样打印测试页
  13. 5V升压8.4V,锂电池充电管理芯片
  14. 关于nodebb中ns-custom-fields插件的使用
  15. git commit三种回退的方式
  16. egret 实战教程之跳一跳(一)
  17. 用Java输出100内的质数和合数(包含100)
  18. iOS 中的渲染框架:CALayer 是显示的基础,存储 bitmap
  19. choose when otherwise,otherwise不起作用
  20. 产线数字化软件源码_软件生产线技术、开源软件声明、源码下载地址

热门文章

  1. 蓝桥杯每日真题之直线
  2. mysql -d -e_mysql常用函数
  3. Python-datetime模块
  4. 笔记︱精准营销解决方案以及营销组合评估
  5. 谈谈MySQL InnoDB存储引擎事务的ACID特性
  6. 腾讯,360,华为等应用市场相继发布适配公告,发力安卓P版本
  7. 生命科学研究需求推动云计算发展
  8. IBM GTS部门或有重大调整,最快本周见分晓
  9. 使用jfreechart在jsp页面柱状图统计
  10. React学习笔记—表单