![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 59
神秘的W同学
这个作者很懒,什么都没留下…
展开
-
HashMap关键源码解析
一、HashMap介绍HashMap是我们常用的集合框架之一,底层实现为数组+链表+红黑树,元素无序,即存放的顺序不一定按照添加的顺序。不支持同步,即线程不安全。二、HashMap的关键参数想看明白HashMap是如何实现的,首先要认识它的这些关键变量,这些变量也蕴含了很多智慧。我在注释中写了简单的解释。 /** * 默认的初始容量,必须是2的幂次方 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;原创 2022-03-07 18:27:44 · 402 阅读 · 0 评论 -
JDK11中ArrayList扩容机制源码分析
首先简单的总结一下ArrayList扩容机制:使用无参构造器,初始容量为0,第一次添加扩容为10,再次扩容为1.5倍(向下取整)使用指定大小的构造器,初始容量为指定大小,再次扩容为1.5倍(向下取整)为什么初始容量为0时第一次扩容为10?为什么扩容是1.5倍?下面通过一个例子,结合源码分析扩容原理和过程。创建一个arraylist对象,添加一个元素ArrayList arrayList = new ArrayList();arrayList.add("obj1");下面打开J原创 2022-01-23 17:55:40 · 770 阅读 · 0 评论 -
Java定时任务在junit测试中失效
在Junit测试类中测试ScheduledExecutorService定时任务时程序会直接正常结束,在main函数中却可以正常运行。原因是当开启新线程后,junit在主线程运行后会关闭,子线程也就无法运行了。定时任务代码: public static void eventControl(){ Runnable runnable = new Runnable() { @Override public void run() {原创 2021-09-10 21:44:53 · 922 阅读 · 0 评论