
数据结构
文章平均质量分 89
喜之郎XX果冻
这个作者很懒,什么都没留下…
展开
-
【数据结构】 二叉搜索树 和 哈希表(Map、Set 集合底层数据结构)
线性探测的缺陷是产生冲突的数据堆积在一块,这与其找下一个空位置有关系,因为找空位置的方式就是挨着往后逐个去找,因此二次探测为了避免该问题,找下一个空位置的方法为: Hi= (H0 + i^2 )% m, 或者:Hi= (H0 - i^2)% m。其中:i = 1,2,3…, H0是通过散列函数Hash(x)对元素的关键码 key 进行计算得到的位置,m是表的大小。虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,原创 2023-09-19 22:29:12 · 500 阅读 · 0 评论 -
Java集合--Map 和 Set概念及基本使用方法
Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然后再来进行重新插入。Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的。,该内部类中主要提供了的获取,value的设置以及Key的比较方式。Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入。Set最大的功能就是对集合中的元素进行去重。原创 2023-09-18 16:21:18 · 473 阅读 · 0 评论 -
PriorityQueue中元素为对象类型时的比较
上篇总结了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null 或者元素之间必须要能够进行比较。那么如何让自定义类型对象可以比较呢?有以下几种方式:复写基类的 equals实现 Comparble 接口,重写 compareTo 方法基于比较器比较原创 2023-09-16 23:30:45 · 275 阅读 · 0 评论 -
Java集合-- PriorityQueue(优先级队列)
堆的创建、插入删除及堆排序,优先级队列的常用方法,以及应用 TOP-K 问题原创 2023-09-15 16:48:08 · 379 阅读 · 0 评论 -
Java集合--二叉树
树形结构概念、二叉树的性质、前中后序遍历、层序遍历、基本操作原创 2023-09-11 17:14:34 · 89 阅读 · 0 评论 -
Java集合-- 栈(Stack)和 队列(Queue)
栈的底层是数组,队列:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈栈的删除操作叫做出栈, 出数据在栈顶。队列。原创 2023-09-11 13:55:45 · 172 阅读 · 0 评论 -
Java集合--List(ArrayList、LinkedList)
ArrayList和LinkedList是Java中两种常用的List实现类。它们之间的主要区别如下:内部实现:ArrayList是动态数组实现,底层使用数组来存储元素。LinkedList是链表实现,底层使用双向链表来存储元素。随机访问:对于随机index访问的get和set方法,一般ArrayList的速度要优于LinkedList。插入和删除操作:对于插入和删除操作,LinkedList优于ArrayList。内存占用:LinkedList比ArrayList更占内存,因为LinkedLis原创 2023-09-10 21:10:19 · 1046 阅读 · 1 评论 -
Java集合框架--类和接口介绍
集合框架: 类和接口总览图, 常用容器及其背后对应的数据结构原创 2023-09-09 22:36:19 · 81 阅读 · 0 评论