关于List集合,这份总结很全面( 三 )
如果有线程安全问题 , 在迭代的过程中 , 会频繁报 ConcurrentModificationException 的错误 , 意思是在我当前循环的过程中 , 数组或链表的结构被其它线程修改了 。
4.6 如何解决线程安全问题?Java 源码中推荐使用 Collections#synchronizedList 进行解决 , Collections#synchronizedList 的返回值是 List 的每个方法都加了 synchronized 锁 , 保证了在同一时刻 , 数组和链表只会被一个线程所修改 , 或者采用 CopyOnWriteArrayList 并发 List 来解决 , 这个类我们后面会说 。
第五章 其它类型题目5.1 说一下双向链表是什么?答:可以把 LinkedList 的结构画出来 , 然后进行如下描述:双向链表中双向的意思是说前后节点之间互相有引用 , 链表的节点我们称为 Node 。 Node 有三个属性组成:其前一个节点 , 本身节点的值 , 其下一个节点 , 假设 A、B 节点相邻 , A 节点的下一个节点就是 B , B 节点的上一个节点就是 A , 两者互相引用 , 在链表的头部节点 , 我们称为头节点 。 头节点的前一个节点是 null , 尾部称为尾节点 , 尾节点的后一个节点是 null , 如果链表数据为空的话 , 头尾节点是同一个节点 , 本身是 null , 指向前后节点的值也是 null 。
5.2 说一下双向链表如何实现新增和删除节点答:
新增:我们可以选择从链表头新增 , 也可以选择从链表尾新增 , 如果是从链表尾新增的话 , 直接把当前节点追加到尾节点之后 , 本身节点自动变为尾节点 。
删除:把删除节点的后一个节点的 prev 指向其前一个节点 , 把删除节点的前一个节点的 next 指向其后一个节点 , 最后把删除的节点置为 null 即可 。
总结【关于List集合,这份总结很全面】List在实际工作中使用频率非常高 。 多学习源代码 , 不仅能够应对面试 , 也能让我们在工作中使用的越来越熟练 。 如果加深对List集合的了解 , 可以研究一下ArrayList集合源码后 , 自己实现一个List集合 。 这样才能对List底层的数据结构和实现细节 , 有更深的理解和更熟练的应用 。
推荐阅读
- 高下立现!关于核心技术的态度,柳传志和任正非截然不同
- 关于手机的谣言……别再信了
- 这次真不站华为!关于华为下架腾讯游戏事件!华为有点不够意思
- 关于特斯拉副总裁陶琳女士回应的回应
- 关于小米11“环保”,是我们低估了雷军,还是小米高估了人性?
- 小米11正式发布,关于送不送充电器,雷军给出了一个“神奇”的方案
- 关于销售破万的华为新机!原来罗永浩曾经的话,还真的没有说错
- 关于5G手机的5个伪真相,别再继续被人骗下去了
- leetcode之错误的集合
- 关于边缘计算与网络动态加速