集合
文章平均质量分 54
主要讲解集合中的一些源码
3个字,让你看了3个字
人生归离复归离,借一浮生逃浮生
展开
-
集合中的快速失败和安全失败
集合中的快速失败和安全失败快速失败当使用迭代器遍历集合的时候,如果在这个遍历的过程中,进行了修改,就会直接抛出ConcurrentModificationExecption原理:在HashMap中,我们每次进行操作的时候,会维护一个modCount,当我们对HashMap进行了修改之类的操作,就会将这个值进行++,当我们迭代的时候,会判断这个值是否发生了改变,改变了就会抛出异常安全失败在JUC包下的这些容器都是安全失败,可以在多线程的情况下使用,并发修改对集合结构的修改会在一个复制的集合上原创 2022-01-17 18:08:47 · 424 阅读 · 0 评论 -
并发容器——ConcurrentHashMap
并发容器——ConcurrentHashMap在以往的java.util下的容器,例如HashMap,它是一个线程不安全的容器,在1.7因为头插法导致了可能出现的死循环,因为没有进行线程安全的一些控制,所以会出现一些问题,但是有一个HashTable,这个类在HashMap的基础上,给每个方法都增加上了Synchronized关键字,但是每次操作都会进行加锁解锁,并且,锁的粒度很大,就会导致锁冲突,多个线程会共同抢夺锁,性能比较差,所以道格李大师就提出了新的并发容器,ConcurrentHashMap这原创 2021-12-19 19:26:45 · 753 阅读 · 0 评论 -
集合(二) —— LinkedList
集合(二) —— LinkedListLinkedList是一个双向链表,结点类是Node优点:插入元素和删除元素比ArrayList在一般情况下要好缺点:遍历和随机访问要效率低,因为和ArrayList比较,没有数组的下标机制来进行访问,需要通过next指针遍历(PS:上面的效率是不排除意外情况,理论上一般情况下的结果,因为有看到部分测试结果比其他的要稍微差,但个人没有测试)(一)重要内部类Node:LinkedList是一个双向链表,所以肯定需要一个结构来作为存储指针以及元素。 priva原创 2021-12-17 17:56:35 · 534 阅读 · 0 评论 -
集合篇(一)——ArrayList
集合篇(一)——ArrayListArrayList是一个在内存中连续分配的Object数组,优点:在遍历元素和随机访问元素的效率高,因为是数组,访问时只需要根据下标进行查找就行,缺点:在添加和删除元素时,就需要进行移动大量元素,在java中是利用Arrays.copyOf()方法以及System.arraycopy方法来进行移动,开销大下面是ArrayList的源码(一):重要属性 //修改次数 protected transient int modCount = 0; //链原创 2021-12-17 15:57:53 · 289 阅读 · 0 评论