Java集合核心内容之数组和链表
小职 2021-06-30 来源 :「波波烤鸭」 阅读 498 评论 0

摘要:本篇主要介绍了Java集合核心内容之数组和链表,通过具体的内容展示,希望对Java开发的学习有一定的帮助。

本篇主要介绍了Java集合核心内容之数组和链表,通过具体的内容展示,希望对Java开发的学习有一定的帮助。

Java集合核心内容之数组和链表

现在出去找工作,如果你不能很好的和面试官去聊聊Java基础里面的算法和用到的数据结构,基本是没戏的,所以本篇开始我们会给大家详细的聊聊Java集合中的相关实现涉及到的数据结构和算法实现,本文先来介绍下最最简单的数据结构,数组和链表。

Java集合核心内容之数组和链表

Java集合核心内容之数组和链表


一、数组

  数组是我们使用到的最简单的一个数据结构,数组的使用


// 动态初始化:初始化时由程序员只指定数组长度,由系统为数组元素分配初始值

char c1[] = new char[5];

// 静态初始化: 初始化时由程序员显示置顶每个数组的初始值,由系统决定数组长度

char c2[] = new char[]{'E','D','U','Y','U'};

char c3[] = {'E','D','U','Y','U'};


  具有如下的特点:


内存地址连续,

可以通过下标的成员访问,下标访问的性能高

增删操作带来更大的性能消耗(保证数据越界的问题,需动态扩容)

Java集合核心内容之数组和链表


二、链表

  链表也是线性的顺序存储数据。只是在内存地址上不是连续的,每一个节点里存到下一个节点的指针(Pointer)


1 单向链表

  单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针,下图就是一个单链表,表头为空,表头的后继节点是"结点10"(数据为10的结点),“节点10"的后继结点是"节点20”(数据为10的结点)

Java集合核心内容之数组和链表

  然后我们来看下删除链表的操作,比如删除30这个节点

Java集合核心内容之数组和链表

  在上面的结构基础上我们再来添加一个节点到链表中

Java集合核心内容之数组和链表

2 双向链表

  双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。


  双链表的示意图如下:

Java集合核心内容之数组和链表


  双向链表的具体实现可以参考


    static final class Node {

       // 前一个节点

        volatile Node prev;


        // 后一个节点

        volatile Node next;


// 链表节点存储的具体数据

        volatile Thread thread;



    }


  我们看看双向链表删除节点的操作,比如说下面这个单链表中我们要删除"节点30"。


删除之前:“节点20"的后继节点为"节点30”,“节点30” 的前继节点为"节点20"。“节点30"的后继节点为"节点40”,“节点40” 的前继节点为"节点30"。


删除之后:“节点20"的后继节点为"节点40”,“节点40” 的前继节点为"节点20"。


Java集合核心内容之数组和链表

  我们再来看看双向链表添加节点的操作,比如说下面这个双向链表在"节点10"与"节点20"之间添加"节点15"


添加之前:“节点10"的后继节点为"节点20”,“节点20” 的前继节点为"节点10"。


添加之后:“节点10"的后继节点为"节点15”,“节点15” 的前继节点为"节点10"。“节点15"的后继节点为"节点20”,“节点20” 的前继节点为"节点15"。

Java集合核心内容之数组和链表


————————————————

我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Java集合核心内容之数组和链表

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程