做网站工资高不高,跨境电商平台建设方案,起名字2023免费八字起名,房地产市场现状分析20231#xff0c;反射机制答#xff1a;JAVA反射机制是在运行状态中#xff0c;对于任意一个类#xff0c;都能够知道这个类的所有属性和方法#xff1b;对于任意一个对象#xff0c;都能够调用它的任意方法和属性#xff1b;这种动态获取信息以及动态调用对象方法的功能称为…1反射机制答JAVA反射机制是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法对于任意一个对象都能够调用它的任意方法和属性这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
2HashMap的底层实现1HashMap是继承自Map接口与AbstractMap抽象类,按照键值对的方式进行存储数据无序存储的key值是唯一的但是value值可以重复key与value可以为null但是key只能有一个为null值可以多个为null2HashMap的底层实现在jdk1.8之后是数组单链表红黑树在链表的长度大于等于8并且数组的长度大于等于64的时候会将链表转化成红黑树在红黑树的节点数小于等于6的时候会将红黑树转化成链表存储键值对的其实是一个node节点数组是node数组发生hash冲突是采用的是拉链法。3HashMap在jdk1.7之前的底层是数组链表每次发生hash冲突进行拉链法采取的是头插法这样会导致扩容的时候元素的指向与扩容之前有所不同可能会造成环从而使得程序陷入死循环jdk1.8之后采用的是尾插法。4HashMap的初始值是16阈值是0.75扩容的倍数为2倍。如果初始化的时候调用的是无参构造器,那么HashMap会在第一次put元素的时候进行第一次扩容也就是默认的长度16。如果初始化的时候我们传入了自定义的数组长度,那么HashMap会选取大于或等于传入值的2的倍数的值。扩容时对所有的元素进行重新计算在数组中的存储位置。5HashMap中的对于key值存储的位置采取了重新hash的方法即(hkey.hashCode())^(h16);
3ArrayList与LinkedList的区别1ArrayList的底层时动态数组LinkedList的底层时双向链表2根据底层的不同可知ArrayList中所有的元素存储的地址都是一串连续的地址空间而LinkedList则是无序随机的地址空间3ArrayList由于有索引的存在而LinkedList是节点之间的指向在查找的时候必须依次遍历查找所以ArrayList的查找与修改效率高于LinkedList4LinkedList由于在删除与添加元素的时候只需要改变节点之间的指向而ArrayList删除与添加元素的时候需要移动添加位置之后的所有元素所以它的删除与添加的效率高于ArrayList。5但是也不是绝对的比如ArrayList删除或添加最后一个元素的效率与LinkedList查找或修改第一个元素与最后一个元素的效率都是高的。