网站首页 > 精选教程 正文
现在出去找工作,如果你不能很好地和面试官去聊聊Java基础里面的算法和用到的数据结构,基本是没戏的,所以本篇开始我们会给大家详细地聊聊Java集合中的相关实现涉及到的数据结构和算法实现,本文先来介绍下最最简单的数据结构,数组和链表。
一、数组
??数组是我们使用到的最简单的一个数据结构,数组的使用
// 动态初始化:初始化时由程序员只指定数组长度,由系统为数组元素分配初始值
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 双向链表
??双向链表(双向链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
??双链表的示意图如下:
?双向链表的具体实现可以参考
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
- 上一篇: Java面试篇基础部分-Java中的集合类
- 下一篇: Java集合-Iterable
猜你喜欢
- 2024-11-30 java基础:ArrayList集合
- 2024-11-30 java高级特性之集合篇
- 2024-11-30 Java中的Map集合、散列表、红黑树介绍
- 2024-11-30 最全的java集合总结知识脑图
- 2024-11-30 理解java的集合框架看看这几张图就够了
- 2024-11-30 Java集合-Collection
- 2024-11-30 15集动画演示Java集合视频总结
- 2024-11-30 Java集合-Iterable
- 2024-11-30 Java面试篇基础部分-Java中的集合类
- 2024-11-30 Java集合Set 集合、List和Collections类
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)