JAVA
Elon0
这个作者很懒,什么都没留下…
展开
-
HashMap分析
HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树(将链表转换成红黑树前会判断...转载 2020-05-05 16:39:17 · 198 阅读 · 0 评论 -
ArrayList与LinkedList的实现区别
ArrayList就是数组列表,底层是Object[] elementData,与LinkedList相比,它查询效率高,增删效率低,线程不安全,使用频率高。ArrayList可以通过构造方法在初始化的时候指定数组的大小。通过无参构造方法初始化是指定为一个空数组,所以数组容量为0,只有真正add时, 才分配默认DEFAULT_CAPACITY=10为初始容量。数组扩容1.5倍,会先把原数组的数...原创 2020-04-17 01:23:41 · 144 阅读 · 0 评论 -
final,static,this,super 关键字总结
final,static,this,super 关键字总结final 关键字final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法...转载 2019-10-17 10:34:39 · 131 阅读 · 0 评论 -
分析多线程下jdk1.8之前hashmap的put方法造成死循环而jdk1.8之后如何解决这个死循环
美团技术博客图解HashMap(一) HashMap多线程死循环问题(调试查看)HashMap中傻傻分不清楚的那些概念Java的HashMap是非线程安全的,在多线程下应该使用ConcurrentHashMap。感谢Doug Lea老爷子的concurrent包。为什么会发生死循环?(我觉得是这个链表头插法加上没有同步的控制造成的环)主要还是因为HashMap的底层数据结构...原创 2019-03-16 14:44:07 · 3754 阅读 · 0 评论 -
Java 的深拷贝和浅拷贝
一、什么是浅拷贝和深拷贝首先需要明白,浅拷贝和深拷贝都是针对一个已有对象的操作。在 Java 中,除了基本数据类型(元类型)之外,还存在类的实例对象这个引用数据类型。而一般使用 『=』号做赋值操作的时候。对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向的同一个对象。而浅拷贝和深拷贝就是在这个基础之...转载 2019-03-22 14:47:31 · 140 阅读 · 0 评论 -
关键字final“不可变的对象”与“不可变的对象引用”
final对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是原先对象里的数据是可以修改的。例如:final List<Integer> list = new ArrayList<Integer>();list.add(1);list.add(2);这里...原创 2019-08-31 15:24:27 · 1078 阅读 · 0 评论