java数据结构
带着希望活下去
这个作者很懒,什么都没留下…
展开
-
数据结构--堆
Heap是一种数据结构具有以下的特点: 1)完全二叉树; 2)heap中存储的值是偏序; Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值; 堆的存储: 一般都用数组来表示堆,i结点的父结点下标就为(i–1)/2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。 堆的操作:insert 插入一个元素:新元素被加入到he..转载 2021-10-11 22:23:39 · 127 阅读 · 0 评论 -
算法中遇到的Integer == 和equals的问题
牛客:链表回文 importjava.util.*; /* *publicclassListNode{ *intval; *ListNodenext=null; *} */ publicclassSolution{ /** * *@paramheadListNode类thehead *@r...原创 2021-10-09 01:03:22 · 90 阅读 · 0 评论 -
java中队列----学习使用
java数据结构没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueuePriorityQueue 和 ConcurrentLinkedQueue 类在 Collection Framework 中加入两个具体集合实现。PriorityQueue 类实质上维护了一个有序列表。加入到 Queue 中的元素根据它们的天然排序(转载 2020-05-14 13:38:04 · 124 阅读 · 1 评论 -
数据结构--栈操作
栈的抽象数据类型 栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop)。若栈中没...原创 2019-10-19 22:42:03 · 136 阅读 · 0 评论 -
List详解
1.List接口首先看下List的官方定义这段描述解决了许多公司经常问的两个问题List有什么特点和Set有什么区别。上面清楚的说明了List是一个有序的集合,和set不同的是,List允许存储项的值为空,也允许存储相等值的存储项,还举了e1.equal(e2)的例子。List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法。...转载 2019-09-23 10:11:46 · 248 阅读 · 0 评论 -
CAS算法在Java中的应用
参考上一篇文章的Java中LinkeList我们进行CAS的了解。Java语言中经常靠synchronized关键字保证同步的,这会导致有锁(也是我们经常所得重量级锁,因为其太过于繁重,所以才出现轻量级锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个...原创 2019-09-25 22:35:28 · 523 阅读 · 0 评论