数据结构
文章平均质量分 91
Java数据结构
独一无二的哈密瓜
感谢大家支持
展开
-
哈希表相关知识
哈希冲突如果两个对象通过相同的哈希函数计算出相同的HashCode相同,这种现象称为hash冲突.①开放定址法当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把把key存放到冲突位置的"下一个位置"去②链地址法对于相同的值,使用链表进行链接.使用数组存在每一个链表.③再hash法通过某个hash函数计算的key存在冲突的时候,再用另外的hash函数对这个key做hash,一致运算直到不再产生冲突.④建立公共溢出区。......原创 2022-07-17 16:56:06 · 1616 阅读 · 29 评论 -
数据结构 Java数据结构 --- Lambda表达式
文章目录Lambda表达式1. Lambda表达式的背景1.1 Lambda表达式的语法1.2 函数式接口2. Lambda表达式的基本使用2.1 无返回值无参数2.2 无返回值一个参数2.3 无返回值多个参数2.4 有返回值无参数2.5 有返回值一个参数2.6 有返回值多个参数2.7 PriorityQueue使用示例2.8 语法精简3. 变量捕获3.1 匿名内部类的变量捕获3.2 Lambda的变量捕获4. Lambda在集合当中的使用4.1 Collection接口4.2 List接口4.3 Map接原创 2022-03-04 08:00:00 · 502 阅读 · 14 评论 -
数据结构 Java数据结构 --- 枚举
文章目录枚举1. 枚举的背景及定义2. 枚举的使用2.1 switch语句2.2 常用的方法2.2.1 values()的使用2.2.2 ordinal()的使用2.2.3 valueOf()的使用2.2.4 compareTo()的使用2.2.5 构造方法2.3 注意事项3. 枚举的优缺点优点:缺点:4. 枚举和反射4.1 总结枚举1. 枚举的背景及定义枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: public static f原创 2022-03-03 15:10:29 · 1524 阅读 · 26 评论 -
数据结构 Java数据结构 --- 反射
文章目录反射1. 反射的定义2. 反射的用途3. 反射基本信息4. 反射相关的类4.1 Class类4.1.1 Class类中的相关方法常用获得类相关的方法常用获得类中属性相关的方法(以下方法返回值为Field相关)获得类中注解相关的方法获得类中构造器相关的方法(以下方法返回值为Constructor相关)获得类中方法相关的方法(以下方法返回值为Method相关)4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用4.2.2.1 通过 Class 类的newInstance方法 获原创 2022-03-02 16:16:53 · 2122 阅读 · 21 评论 -
数据结构 Java数据结构 --- 哈希表
文章目录哈希表1. 哈希表的概念2. 哈希冲突的概念3. 冲突-避免4. 冲突-避免-哈希函数设计4.1 直接定制法--(常用)4.2 除留余数法--(常用)4.3 平方取中法--(了解)4.4 折叠法--(了解)4.5 随机数法--(了解)4.6 数学分析法--(了解)5. 冲突-避免-负载因子调节(重点掌握)6. 冲突-解决-闭散列6.1 线性探测6.2 二次探测7. 冲突-解决-开散列/哈希桶(重点掌握)7.1 代码实现7.2 代码实现(自定义类型)7.3 性能分析8. 和 java 类集的关系哈希原创 2022-02-27 18:24:14 · 606 阅读 · 16 评论 -
数据结构 Java数据结构 --- 二叉搜索树
二叉搜索树1. 二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树2. 二叉树操作 - 查找代码实现: public Node search(int val){ while (root != null){ if(val > root.val){// va原创 2022-02-25 09:06:49 · 588 阅读 · 20 评论 -
数据结构 Java数据结构 --- Map和Set
文章目录Map 和 Set1. Map1.1 关于Map的说明1.2 Map 的常用方法说明1.3 关于Map.Entry< K, V >的说明1.4 Map的注意事项1.5 TreeMap和HashMap的区别2. Set2.1 常见方法说明2.2 Set的注意事项2.3 TreeSet和HashSet的区别3. 面试题练习第一题: 只出现一次的数字解题思路:代码实现:第二题: 复制带随机指针的链表解题思路:代码实现:第三题: 宝石与石头解题思路:代码实现:第四题: 坏键盘打字解题思路:代码实原创 2022-02-23 17:07:37 · 1248 阅读 · 29 评论 -
数据结构 Java数据结构 --- 泛型
文章目录泛型1. 泛型类的定义1.1 语法1.2 案例2. 泛型类的使用2.1 语法2.2 示例小结:3. 泛型如何编译的3.1 擦除机制3.2 为什么不能实例化泛型类型数组4. 泛型的上界4.1 语法4.2 示例4.3 复杂示例5. 泛型方法5.1 定义语法5.2 示例5.3 使用示例6. 泛型中的父子类关系7. 通配符7.1 通配符解决什么问题7.2 通配符上界语法:示例1示例2:假设有如下关系7.3 通配符的上界-父子类关系7.4 通配符的上界-特点7.5 通配符下界7.6 通配符下界-父子类关系7.原创 2022-02-20 15:48:38 · 1336 阅读 · 13 评论 -
数据结构 Java数据结构 --- 十大排序
1.直接插入排序1.1 动图演示1.2 插入排序的思路:从第一个元素开始,这里我们第一个元素是已排序的.取下一个元素,和有序序列的元素从后往前比较.( 有序区间 : [0,i) )如果得到的有序序列的元素 比 该元素大 则 将取得的有序元素往后放重复3操作,直到得到的有序元素 比 该元素小, 或者 有序元素比完了.记录这个位置然后将该元素放入到这个位置.遍历数组,重复2~5的操作.1.3 代码实现: /** * 时间复杂度: * 最好的情况.原创 2022-01-13 16:58:16 · 1917 阅读 · 37 评论 -
数据结构 Java数据结构 ---- 堆(优先级队列)
文章目录堆(优先级队列)1.二叉树的顺序存储1.1 存储方式1.2 下标的关系2.堆2.1 概念3.模拟实现PriorityQueue①基本操作②向下调整③建堆④入队列⑤出队列⑥堆排序4.堆的应用-优先级队列4.1 java 中的优先级队列4.2 java 中堆的使用5. 集合框架中PriorityQueue的比较方式6.堆的其他应用-TopK 问题用堆的思路:画图解析:代码实现:运行结果:7.面试题---查找和最小的K对数字解题思路:代码实现:堆(优先级队列)1.二叉树的顺序存储1.1 存储方式使原创 2021-12-29 17:32:00 · 2123 阅读 · 27 评论 -
数据结构二叉树相关面试题 Java版 LeetCode题 ------- 二叉树
基础面试题第一题: 二叉树的前序遍历。LeetCode144: 二叉树的前序遍历描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。(递归解法)class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); if(root == null) return原创 2021-12-13 08:30:00 · 1091 阅读 · 25 评论 -
数据结构 Java数据结构 --- 二叉树
二叉树1. 树形结构1.1 概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…Tm,其中每一个集合 Ti (1 <= i<= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继树是递归定义的。原创 2021-12-11 11:26:33 · 5164 阅读 · 42 评论 -
数据结构 Java数据结构 --- 栈和队列
栈和队列1. 栈(Stack)1.1 概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。Stack的Push和Pop遵循先进后出的原则,如图:1.2 实现利用顺序表实现,即使用尾插 + 尾删的方式实现利用链表实现,则头尾皆可相对来说,原创 2021-12-05 11:04:32 · 4563 阅读 · 36 评论 -
数据结构 Java数据结构 --- List ArrayList
文章目录List1. 预备知识-泛型(Generic)1.1 泛型的引入1.2 泛型类的简单演示1.3 泛型的意义1.4 泛型是怎么编译的?1.5 泛型总结2 . 包装类2.1 基本数据类型和包装类直接的对应关系2.2 包装类的使用,装箱(boxing)和拆箱(unboxing)3 . ArrayList简介4 . ArrayList使用4.1 ArrayList的构造4.2 ArrayList的遍历4.2.1 迭代器 Iterator ListIterator4.3 ArrayList常见操作原创 2021-12-03 15:07:09 · 1575 阅读 · 25 评论 -
数据结构 Java数据结构 --- 集合框架及背后的数据结构
文章目录集合框架及背后的数据结构1.介绍类和接口总览2.接口 interfaces2.1基本的关系解释:2.2Collection 常用方法说明2.3 Collection 示例2.4 Map 常用方法说明2.5 Map 示例3.实现 classes集合框架及背后的数据结构1.介绍Java 集合框架 Java Collection Framework, 又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其他类 classes .类和接口总览原创 2021-11-30 16:22:27 · 850 阅读 · 21 评论 -
数据结构 --- 无头双向链表的实现
无头双向链表实现初始代码:class ListNode { public int val ; public ListNode prev; public ListNode next; public ListNode(int val) { this.val = val; }}public class MyDoubleLinkedList { public ListNode haed;//指向双向链表的头节点 public原创 2021-11-10 10:37:35 · 249 阅读 · 7 评论 -
数据结构 --- 顺序表 和 无头单向非循环链表
目录顺序表和链表1.顺序表1.1概念及结构1.2 接口实现第一步:先实现代码基础:第二步 : 实现 // 打印顺序表第三步: 实现 // 获取顺序表的有效数据表长度第四步:实现 // 在 pos 位置新增元素第五步: 实现 // 判定是否包含某个元素第六步: 实现 // 查找某个元素对应的位置第七步: 实现 // 获取 pos 位置的元素第八步: 实现// 给 pos 位置的元素设为 value第九步: 实现 //删除第一次...原创 2021-11-06 09:42:14 · 381 阅读 · 11 评论