Java数据结构2——深入JCF
2023-09-11 14:18:08 时间
Java集合框架(JCF)参考C++的STL实现的在日常Java开发工作很常用的数据结构容器,有技术追求的人除了要会简单使用JCF之外,也要知道其底层的实现机制,知道它是如何实现的,为什么这样实现。就好比司机开车一样,司机完全不知道变速箱的原理一样可以开车,但是除了问题就不知道怎么办,不会维修更不会造车。关于深入理解JAVA集合系列文章,有朋友已经总结的不错,记录一下:
- Java Collections Framework概览 对Java Collections Framework,以及Java语言特性做出基本介绍。
- Java ArrayList源码剖析 结合源码对ArrayList进行讲解。
- Java LinkedList源码剖析 结合源码对LinkedList进行讲解。
- Java ArrayDeque源码剖析 以AarryDeque为例讲解Stack和Queue。
- 史上最清晰的红黑树讲解(上)和史上最清晰的红黑树讲解(下) 结合源码对TreeSet和TreeMap进行讲解。
- Java HashSet和HashMap源码剖析 结合源码对HashSet和HashMap进行讲解。
- Java集合框架源码剖析:LinkedHashSet 和 LinkedHashMap 结合源码对LinkedHashSet和LinkedHashMap进行讲解。
- 深入理解Java PriorityQueue 结合源码对PriorityQueue进行讲解。
- 浅谈WeakHashMap 对WeakHashMap做出基本介绍。
Java容器能够容纳任何类型的对象,这一点表面上是通过泛型机制完成,Java泛型不是什么神奇的东西,只是编译器为我们提供的一个“语法糖”,泛型本身并不需要Java虚拟机的支持,只需要在编译阶段做一下简单的字符串替换即可。实质上Java的单继承机制才是保证这一特性的根本,因为所有的对象都是Object的子类,容器里只要能够存放Object对象就行了。
事实上,所有容器的内部存放的都是Object对象,泛型机制只是简化了编程,由编译器自动帮我们完成了强制类型转换而已。JDK 1.4以及之前版本不支持泛型,类型转换需要程序员显式完成。为了规范容器的行为,统一设计,JCF定义了14种容器接口(collection interfaces),它们的关系如下图所示:
Map接口没有继承自Collection接口,因为Map表示的是关联式容器而不是集合。但Java为我们提供了从Map转换到Collection的方法,可以方便的将Map切换到集合视图。
上图中提供了Queue接口,却没有Stack,这是因为Stack的功能已被JDK 1.6引入的Deque取代。实现
上述接口的通用实现见下表:
Implementations Hash Table Resizable Array Balanced Tree Linked List Hash Table + Linked List Interfaces Set HashSet TreeSet LinkedHashSet List ArrayList LinkedList Deque ArrayDeque LinkedList Map HashMap TreeMap LinkedHashMap
相关文章
- Java 8 指南
- Java Map遍历方式的选择
- Java实现 LeetCode 130 被围绕的区域
- Java实现迷宫城堡(强连通图的判定)
- Java实现 蓝桥杯 历届真题 数字拆分
- 【JAVA】MacBook安装Java环境及eclipse
- 【JAVA】 03-Java中的异常和包的使用
- Java - Spring
- github搜索技巧:搜索star数量大于10000的Java项目
- Java编程思想——到底选择合成还是继承
- Java超类-java.lang.object
- 常见Java面试题之JVM加载class文件的原理机制
- 【java】Java生成微信小程序二维码
- 【java】Java中-> 是什么意思?
- 【Java用法】java 8两个List集合取交集、并集、差集、去重并集
- Java:apache.poi读写Excel文件
- 【数据结构与算法】冒泡排序——Java、C++、Python 中的算法示例代码
- [Java 8 HashMap 详解系列] 1.HashMap 的存储数据结构
- Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long错误的详细解决方法
- Java Logger(java日志)
- Java中Date各种相关用法
- Java---25---集合框架共性方法
- 【JAVA】【NIO】5、Java NIO Scatter / Gather
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释
- 汇智动力学院——Java 浅谈数据结构和算法
- Java Instrumentation 内存马——主要是利用Instrumentation Java API来做内存注入,会用到反射机制,文中提到检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测
- Java实战之生成电信公司的通话记录
- Java 数据结构
- 《图解数据结构与算法》(Java代码实现、注释解析、算法分析)
- 【Java】基础知识