![](https://img-blog.csdnimg.cn/20191023190006309.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java集合框架
Java集合框架
Java小白白又白
Java小白
展开
-
Java集合13 - 二叉搜索树、平衡二叉树、红黑树特点总结
1.二叉搜索树(Binary Search Tree) 二叉搜索树:又称为二叉排序树, 属于树的一种, 通过二叉树将数据组织起来, 树的每个节点都包含了健值key、数据值data、左子节点指针、右子节点指针。其中健值key是最核心的部分, 它的值决定了树的组织形状; 数据值data是该节点对应的数据。 特点: (1)左右子树也分别是二叉搜索树。 (2)左子树的所有节点key值都小于它的根节点的key值。 (3)右子树的所有节点key值都大于他的根...原创 2020-12-27 22:58:42 · 455 阅读 · 0 评论 -
HashMap中的roundUpToPowerOf2()和tableSizeFor()
1.roundUpToPowerOf2()和tableSizeFor()是什么 roundUpToPowerOf2():JDK1.7中HashMap初始化时的一个方法,目的为:返回大于或等于最接近输入参数的2的整数次幂的数 tableSizeFor():JDK1.8中HashMap构造函数中用于初始化扩容阈值threshold的一个方法,其目的同上:返回大于或等于最接近输入参数的2的整数次幂的数2.roundUpToPowerOf2()方法解析 ro...原创 2020-12-24 15:27:47 · 832 阅读 · 0 评论 -
Java集合12 - JDK1.7中的LinkedHashMap
1.LinkedHashMap是什么 一个基于LinkedList和HashMap实现的Map,继承自HashMap,实现了Map接口。源码上的注释告诉了我们以下几件事: 底层实现:基于LinkedList和HashMap实现,允许null元素,内部维护了一个贯穿所有内部节点的双向链表,可以通过构造函数来指定其迭代顺序(插入顺序/访问顺序)。 性能:与HashMap一样,add、contains、remove提供恒定的时间性能,假设hash函数在bucket之...原创 2020-12-24 10:44:50 · 526 阅读 · 0 评论 -
Java集合11 - HashMap中一些值得思考的问题
1.Key为null的键值对存储位置 JDK1.7存放null值源码: 可以看到1.7中将null值存放在数组0号索引处,JDK1.8源码: 由于在hash函数中,null的hash为0,所以红框中的代码可以简化成:if ((p = tab[i = 0]) == null) tab[i] = newNode(hash, key, value, null);可以看到1.8中也是将null值存放在数组0号索引处,综上两种情况,HashM...原创 2020-12-23 23:27:21 · 2066 阅读 · 0 评论 -
Java集合10 - JDK1.7和JDK1.8中HashMap的区别
1. 底层实现结构不同 JDK1.7:数组+链表 JDK1.8:数组+链表+红黑树2. 扰动函数不同 JDK1.7:九次扰动,四次位运算+五次异或运算 JDK1.8:两次扰动,1次位运算+1次异或运算3. resize()函数功能不同 JDK1.7:resize()为扩容,inflateTable()为初始化底层数组 JDK1.8:resize()为初始化+扩容4. 扩容的判断时机不同 ...原创 2020-12-23 15:30:01 · 610 阅读 · 0 评论 -
Java集合09 - JDK1.8中的HashMap
1.底层实现原理原创 2020-12-27 15:51:48 · 475 阅读 · 2 评论 -
Java集合08 - JDK1.7中的HashMap
1.HashMap底层实现原理先来看一下HashMap中定义了哪些原创 2020-12-22 22:36:33 · 678 阅读 · 0 评论 -
Java集合07 - SynchronizedList和Vector的区别
1.SynchronizedList、Vector概述 SynchronizedList:java.util.Collections中的一个静态内部类,可以通过List进行构造,用于返回线程安全的List集合 Vector:java.util包中的类,一个和ArrayList相同底层实现的线程安全的List集合 那么问题来了,这两个类一定存在着某种不同,否则直接把老的类删除掉就可以了,究竟有哪些不同呢,我们往下看。2.SynchronizedList和Ve...原创 2020-12-18 17:37:13 · 1291 阅读 · 2 评论 -
Java集合06 - ArrayList、LinkedList和Vector的区别
1.LinkedList是什么 一个基于双向链表的List实现,继承自AbstractSequentialList,实现了List、Deque、Cloneable、Serializable,支持快速随机访问、克隆及序列化(不了解的小伙伴可以移步我前几篇博文,对这几个接口有做详细的说明,Deque(Double Queue)接口小伙伴们感兴趣的话可以自己看下,定义了一些双向链表的常用方法)。源码上的注释告诉了我们以下几件事: 底层实现:LinkedList基于双向链表实现,可存...原创 2020-12-17 16:53:15 · 468 阅读 · 0 评论 -
Java集合05 - ArrayList
1.Iterable是什么 Iterable接口是java集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素。源码第一行告诉我们:实现此接口的对象可以使用增强for,看来这个甜甜的语法糖的底层实现确实是使用了迭代器。Iterable接口内部有三个成员方法: 第一个接口来自JDK1.5,后两个来自JDK1.8。不知道小伙伴会不会有疑问,反正我第一次看的时候疑惑得很,为什么接口里可以写实现方法!!!仔细一看有个default,好吧Java 8的新产...原创 2020-12-17 11:10:45 · 1179 阅读 · 0 评论 -
Java集合04 - RandomAccess
1.什么是RandomAccess RandomAccess和Cloneable、Serializable接口一样,本质上都是一种标志性接口,无具体实现,意在告知JVM此类(在恒定时间内)可支持快速随机访问。源码中一大段话翻译过来讲了这么几件事: (1)给List使用的标记型接口,目的是使其支持(在恒定时间内)的快速随机访问...原创 2020-12-11 15:44:37 · 1867 阅读 · 0 评论 -
Java集合03 - Cloneable
1.Cloneable是什么 Cloneable和Serializable接口一样,本质上都是一种标志性接口,无具体实现,意在告知JVM此类可实现克隆功能。当程序中想要使用一个对象的clone方法,仅仅用public重写基类clone方法还不够,还要实现Cloneable接口,否则会抛出CloneNotSupportedException异常。2.clone方法的追根溯源 在Java Object类中默认提供了clone方法: 访问类型为prote...原创 2020-12-10 21:18:53 · 729 阅读 · 0 评论 -
Java集合02 - Serializable
1.什么是序列化与反序列化 在Java程序运行期间所创建的对象都暂时保存在内存中,服务端创建的用户session也是如此,假设有一天用户的session过多,并且这些session中有很多僵尸粉,长期不活跃还占用着服务器的内存资源,那么能不能有一种方法可以将处于内存中的对象持久化到硬盘中,等僵尸粉突然活跃后再将其取出重新加载进内存呢?这便用到了序列化技术: 序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢复为对象的过程2.Serializable...原创 2020-12-09 15:47:56 · 1700 阅读 · 0 评论 -
Java集合01 - Collection整体架构
前言:写这篇文章之前笔者查阅过一些资料,发现网上大多数的博文要么就是东拼西凑别人的话,管它JDK版本对不对应,抄就完了,抄顺手了连图片也抄过来;要么就是博文写的内容自己都没验证过就往上发。笔者是菜鸡,但觉得既然决定写博文就要对自己和看的人负责,搞技术还是要做到知其然知其所以然,看源码最好还是自己动动手。如果亲爱的读者您在我的任何一篇博文中发现问题,欢迎批评指正,笔者必虚己受人。1.Collection整体架构图 吐槽完毕,进入正题。架构图推荐自己动手用Idea Diagra...原创 2020-12-09 11:42:22 · 861 阅读 · 1 评论 -
HashMap、HashTable和ConcurrentHashMap的区别
HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 hash使用:int hash = key.hashCode(); int i...原创 2019-11-09 16:38:23 · 234 阅读 · 0 评论