data structure & arithmetic
data structure & arithmetic
Dongguabai
这个作者很懒,什么都没留下…
展开
-
栈
栈(Stack)是一种线性的数据结构。操作比数组简单的多。 栈只能从一端添加元素,也只能从一端取出元素,这一端也成为“栈顶”。如果想取出数据,也只能从栈顶取出“第三个入栈”数据,甚至从用户的角度都看不到其他的数据,用户只能看到“第三个入栈”数据。栈属于一种后进先出的数据结构(LIFO)。 栈的应用 比如一些常见的Undo操作,也就是从栈中取出最近的那次操作的元素。 程序调用的系统栈子逻...原创 2018-09-12 17:10:24 · 199 阅读 · 0 评论 -
队列 take poll 几种方法
转自:https://blog.csdn.net/qiuchaoxi/article/details/80359462转载 2019-01-27 14:08:18 · 2338 阅读 · 2 评论 -
谈谈HashMap线程不安全的体现
转自:http://www.importnew.com/22011.html 为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢? 1. resize死循环 我们都知道HashMap初始容量大小为16,一般来说,当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大Hash表的尺寸,但是这样一来,整个Hash表里的元素都需要被重算一遍。这...转载 2018-11-09 11:37:02 · 168 阅读 · 0 评论 -
HashMap分析(JDK1.8)
这里是基于JDK1.8。 可以看出HashMap继承了AbstractMap,实现了Map。 先看看HashMap中的几个关键的属性: 默认初始容量是16: 也很好理解,1的二进制还是1: 向左位移四位: 最大容量很大: 负载因子,主要用来扩展HashMap的容量,建议不要进行修改: 初始容量是16,那么就是在容量到达12的时候开始进行扩容。扩容越大,...原创 2018-10-18 20:41:03 · 274 阅读 · 0 评论 -
队列
队列(Queue)是一种线性数据结构。相关操作也比数组简单的多,但是队列与栈不同的是,队列只能从一段(队尾)添加元素,从另一端(队首)取出元素,即先进先出(FIFO)。 实现自己的队列 首先定义一个顶层接口: /** * @author Dongguabai * @date 2018/9/13 9:16 */ public interface Queue<E> { ...原创 2018-09-13 09:34:31 · 224 阅读 · 0 评论 -
浅谈单链表与双链表的区别
原文地址:https://blog.csdn.net/kangxidagege/article/details/80211225 昨天面试官面试的时候问了我一道关于链表的问题:情境如下 面试官:请说一下链表跟数组的区别? 我:数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度...转载 2018-09-10 18:29:08 · 694 阅读 · 0 评论 -
Java 中的 LinkedList 是单向链表还是双向链表?
原文地址:https://blog.csdn.net/qq_32575047/article/details/78885066 今天继续分享一道Java经典面试题: 题目描述:Java 中的 LinkedList 是单向链表还是双向链表? 是双向链表,你可以检查 JDK 的源码。在 Eclipse,你可以使用快捷键 Ctrl + T,直接在编辑器中打开该类。 于是对于LinkedList的实...转载 2018-09-10 18:27:27 · 2905 阅读 · 0 评论 -
单向链表
链表是一种非常重要的线性数据结构。动态数组、栈、队列底层仍然是依托的静态数组,通过“扩容”解决静态数组容量固定的问题,链表与它们不一样,链表是一种真正的动态数据结构,也是最简单的动态数据结构。链表与引用(指针)有关联。 链表(Linked List)数据是储存在一种叫节点(Node)的结构中: class Node{ //真正的数据 E e; //指向当前节点的下一个...原创 2018-09-10 18:11:17 · 229 阅读 · 0 评论 -
手写ArrayList
import javax.validation.constraints.NotNull; import java.util.*; import java.util.function.Consumer; /** * @author Dongguabai * @date 2018/8/29 15:54 */ public class MyArrayList<E> implemen...原创 2018-08-29 17:34:10 · 265 阅读 · 0 评论 -
基于栈实现括号匹配算法
括号匹配算法在各种编辑器中使用的非常多,其实基于栈来实现是非常简单的。代码如下: /** * 括号匹配 * * @author Dongguabai * @date 2018/9/12 17:26 */ @NoArgsConstructor(access = AccessLevel.PRIVATE) public class ParenthesisMatchingHelper { ...原创 2018-09-12 18:21:14 · 1230 阅读 · 0 评论 -
TreeMap 使用注意事项
数据结构集合框架这种内功总是会被忽略,这次总算是掉到“坑”里一次,也算是一个警醒。 一个 POJO: @Getter @Setter @ToString @AllArgsConstructor public class User { private Integer id; private String name; private Integer seq; } 先以老生常...原创 2019-08-26 08:48:21 · 515 阅读 · 0 评论