
数据结构
文章平均质量分 94
千筠Wyman
这个作者很懒,什么都没留下…
展开
-
时间轮算法(TimingWheel)
时间轮算法的应用非常广泛,在 Dubbo、Netty、Kafka、ZooKeeper、Quartz 的组件中都有时间轮思想的应用,甚至在 Linux 内核中都有用到。原创 2022-10-22 16:30:32 · 7829 阅读 · 2 评论 -
【Java 集合类】Java 集合类总览
jdk 包版本:jdk1.8.0_111Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口,它作为一个容器,存储一系列的对象。Map是键值对的结构,存储一系列的键值对<key, value>。Java 的java.util包主要提供了以下四种类型的集合:List:一种有序列表的集合;Set:一种保证没有重复元素的集合;Map:一种通过键值(key-value)查找的映射表集合。Queue:一种队列容器,其特性与List相同原创 2021-07-06 16:42:32 · 448 阅读 · 0 评论 -
【Java 集合类】PriorityQueue 类源码分析
基本定义PriorityQueue 是一个基于优先级堆实现的优先级队列,具体来说是通过完全二叉树实现的,因此可以通过数组作为其底层实现。队列中的元素默认按照其自然顺序(小顶堆)进行排列,或者是根据调用构建方法时传入的比较器 Comparator 对内部元素进行排序。优先级队列的元素不允许为 null,也不允许插入一个不可比较的对象,因为有可能在排序时导致类型转换异常(ClassCastException),因此不传入比较器时,元素需要本身就已经实现 Comparable 接口。优先级队列是无边界的,但是原创 2021-09-29 19:22:51 · 272 阅读 · 0 评论 -
【数据结构】数据结构三要素
数据结构三要素数据结构的三要素包括数据逻辑结构、数据存储结构和数据的运算。数据逻辑结构数据的逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的具体存储形式无关,是独立于计算机的。数据逻辑结构通常分为线性结构和非线性结构。典型的数据结构与其逻辑结构的对应关系如下:对于线性表、集合、树、图这四种典型的数据结构,他们分别有以下特点:集合结构:数据元素之间只存在 “同属于一个集合”的关系。线性结构:数据元素之间只存在“一对一”的关系。树形结构:数据元素之间存在“一对多”的关系。原创 2020-07-01 13:45:24 · 8185 阅读 · 1 评论 -
【数据结构】块状链表(块状数组)
块状链表(块状数组)数组与链表在讨论块状链表(或者称块状数组)之前,我们先回顾一下数组和链表的特点:操作数组 (通常考虑有序)链表存储结构地址连续的存储单元,物理位置相邻地址不连续,物理位置不相邻定位O (1)O (N)插入O (N)O (1)删除O (N)O (1)数组定位的效率很高,直接通过下标索引就能获取元素的定位,由于长度通常是固定的,因此不适合插入和删除等操作。当数组为有序时,使用二分查找法效率较高,时间复杂度为 O (logN)原创 2020-06-30 21:56:03 · 1908 阅读 · 0 评论 -
【剑指 Offer】09. 用两个栈实现队列
问题描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )。其中:1 <= values <= 10000 最多会对appendTail、deleteHead 进行10000次调用示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][...原创 2020-06-30 20:47:48 · 351 阅读 · 0 评论