以武侠形式理解Java LinkedList源码

作者:沉默王二 时间:2021-12-27 20:34:23 

一、LinkedList 的剖白

大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同。师兄练的是动态数组,我练的是链表。

问大家一个问题,知道我为什么要练链表这门内功吗?

举个例子来讲吧,假如你们手头要管理一推票据,可能有一张,也可能有一亿张。

该怎么办呢?

申请一个 10G 的大数组等着?那万一票据只有 100 张呢?

申请一个默认大小的数组,随着数据量的增大扩容?要知道扩容是需要重新复制数组的,很耗时间。

关键是,数组还有一个弊端就是,假如现在有 500 万张票据,现在要从中间删除一个票据,就需要把 250 万张票据往前移动一格。

遇到这种情况的时候,我师兄几乎情绪崩溃,难受的要命。师父不忍心看到师兄这样痛苦,于是打我进入师门那一天,就强迫我练链表这门内功,一开始我很不理解,害怕师父偏心,不把师门最厉害的内功教我。

直到有一天,我亲眼目睹师兄差点因为移动数据而走火入魔,我才明白师父的良苦用心。从此以后,我苦练“链表”这门内功,取得了显著的进步,师父和师兄都夸我有天赋。

链表这门内功大致分为三个层次:

  • 第一层叫做“单向链表”,我只有一个后指针,指向下一个数据;

  • 第二层叫做“双向链表”,我有两个指针,后指针指向下一个数据,前指针指向上一个数据。

  • 第三层叫做“二叉树”,把后指针去掉,换成左右指针。

但我现在的功力还达不到第三层,不过师父说我有这个潜力,练成神功是早晚的事。

先赞后看:《Java 程序员进阶之路》专栏在 GitHub 上已经开源了,有 GitHub 账号的小伙伴,来安排一波 star 呀!看能不能冲一波 trending 榜单,求求各位了。

GitHub 地址:https://github.com/itwanger/toBeBetterJavaer

二、LinkedList 的内功心法

来源:https://blog.csdn.net/qing_gee/article/details/120076105

标签:Java,LinkedList
0
投稿

猜你喜欢

  • springboot整合腾讯云短信开箱即用的示例代码

    2023-04-02 06:06:38
  • Android中Intent习惯用法

    2021-10-10 08:48:22
  • Spring实现内置监听器

    2021-07-06 01:29:06
  • 详解Java中使用泛型实现快速排序算法的方法

    2022-04-28 09:47:00
  • Android中Edittext设置输入条件

    2023-03-11 23:05:08
  • 如何使用C#操作幻灯片

    2023-08-27 01:06:01
  • C#使用foreach遍历哈希表(hashtable)的方法

    2022-10-07 20:00:44
  • Spring Boot集成Shiro实现动态加载权限的完整步骤

    2023-02-18 17:43:10
  • C#实现JWT无状态验证的实战应用解析

    2022-07-28 09:20:26
  • Android实现ViewPager无限循环效果(一)

    2022-08-02 18:58:34
  • Java全面细致讲解类与对象

    2022-07-07 07:04:42
  • Java8 Stream流的常用方法汇总

    2023-07-17 17:56:59
  • LINQ基础之Intersect、Except和Distinct子句

    2022-01-19 00:46:13
  • 详解SpringSecurity中的Authentication信息与登录流程

    2022-01-20 21:36:22
  • C#实现Socket通信的解决方法

    2022-06-01 22:06:00
  • C#值类型和引用类型的深入理解

    2021-07-13 07:45:11
  • 如何动态替换Spring容器中的Bean

    2023-05-22 20:18:59
  • Java String对象使用方法详解

    2023-12-14 14:43:52
  • 浅谈android nexus私服的使用

    2022-09-24 01:30:59
  • 小谈Kotlin的空处理的使用

    2022-05-05 05:23:24
  • asp之家 软件编程 m.aspxhome.com