
Java集合八股文
文章平均质量分 76
Java集合八股文
Java菜鸟、
努力学习java中
展开
-
ConcurrentHashMap原理,idk7和idk8版本的区别
Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。锁:Segment分段锁 Segment继承了ReentrantLock,锁定操作的Segment,其他的Segment不受影响,并发度为segment个数,可以通过构造函数指定,数组扩容不会影响其他的segment。锁:锁链表的head节点,不影响其他元素的读写,锁粒度更细,效率更高,扩容时,阻塞所有的读写操作、并发扩容。原创 2024-05-23 16:21:26 · 611 阅读 · 0 评论 -
ArrayList和LinkedList的区别是什么?
ArrayList按照下标査询的时间复杂度O(1)【内存是连续的,根据寻址公式】,LinkedList不支持下标查询查找(未知索引): ArrayList需要遍历,链表也需要链表,时间复杂度都是O(n)其他都需要遍历链表,时间复杂度是O(n)查询操作时查询头尾结点的时间复杂度是O(1)、平均的查询时间复杂度是O(n)、给定节点找前驱节点的时间复杂度为O(1)增删操作时头尾结点增删的时间复杂度为O(1)其他部分结点增删的时间复杂度是 O(n)给定节点增删的时间复杂度为O(1)原创 2024-04-30 23:26:30 · 203 阅读 · 1 评论 -
Java集合
Arrays.asList转换list之后,如果修改了数组的内容,list会受影响因为它的底层使用的Arrays类中的一个内部类ArrayList来构造的集合,在这个集合的构造器中,把我们传入的这个集合进行了包装而已,最终指向的都是同一个内存地址。list用了toArray转数组后,如果修改了list内容,数组不会影响,当调用了toArray以后,在底层是它是进行了数组的拷贝,跟原来的元素就没啥关系了,所以即使list修改了以后,数组也不受影响。因为如果从中间插入或者删除元素,后面的元素都会进行移动。原创 2024-04-30 23:02:32 · 548 阅读 · 0 评论