前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java集合核心内容之数组和链表,大厂越来越注重基础了,建议收藏

Java集合核心内容之数组和链表,大厂越来越注重基础了,建议收藏

作者头像
用户4919348
发布2021-06-17 20:03:16
5010
发布2021-06-17 20:03:16
举报
文章被收录于专栏:波波烤鸭波波烤鸭

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、数组

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

代码语言:javascript
复制
// 动态初始化:初始化时由程序员只指定数组长度,由系统为数组元素分配初始值
char c1[] = new char[5];
// 静态初始化: 初始化时由程序员显示置顶每个数组的初始值,由系统决定数组长度
char c2[] = new char[]{'E','D','U','Y','U'};
char c3[] = {'E','D','U','Y','U'};

  具有如下的特点:

  • 内存地址连续,
  • 可以通过下标的成员访问,下标访问的性能高
  • 增删操作带来更大的性能消耗(保证数据越界的问题,需动态扩容)
在这里插入图片描述
在这里插入图片描述

二、链表

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

1 单向链表

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

2 双向链表

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

  双链表的示意图如下:

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
    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"。

在这里插入图片描述
在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述

~数据和链表的内容相对来说比较简单,我们就给大家介绍到这里了。 欢迎点赞关注加收藏哦V_V

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组
  • 二、链表
    • 1 单向链表
      • 2 双向链表
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档