Java数据结构
文章平均质量分 89
Java数据结构部分知识
Word码鸭
乐观和爱才是生活的解药
展开
-
【Lambda表达式】
Lambda表达式引例interface IMessage { void printMessage(String msg);}class MessageImpl implements IMessage{ @Override public void printMessage(String msg) { System.out.println(msg); }}public class LambdaTest { public static v原创 2022-06-12 17:08:18 · 439 阅读 · 5 评论 -
哈希表和HashMap的源码解析
哈希表是一个天然的查找和搜索实际上是通过数组衍生出来的,它高效查找的奥秘就在于数组的随机访问特性。例:假设现有一个数组 arr = [ 9,5,2,7,3,6,8],需要判断 3 这个元素是否存在。这时我们创建一个 boolean 数组,这个数组的长度取决于原数组中最大值是谁。arr中最大值是9,则创建一个长度为10的boolean数组,遍历原数组,出现一个元素,就在该元素值对应于新数组的位置记为true这时要查询原数组是否有3,就直接返回新数组索引为3的值,若为true就代表有,若为f.原创 2022-05-29 17:05:19 · 258 阅读 · 0 评论 -
【java反射详解】
什么是反射定义反射是所有第三方框架的基础,Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到,那么我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。动态获取类信息以及动态调用该对象的属性和方法的功能称之为反射。(此处的动态,指的是运行时获取,javac 生产 class文件,反射就存在于java运行一个主类时)原创 2022-04-16 11:35:05 · 742 阅读 · 0 评论 -
【泛型和内部类的关系】
泛型和内部类的关系泛型的通配符引例< ? >上限通配符下限通配符类型擦除原创 2022-04-14 17:20:16 · 2648 阅读 · 1 评论 -
七大排序详解
排序的稳定性七大排序总览测试类代码1.1选择排序1.2双向选择排序2.1插入排序2.2折半插入排序3.冒泡排序4.希尔排序5.堆排序6.归并排序归并排序的两点优化归并排序的非递归写法海量数据的排序处理7. 快速排序快速排序的优化二路快排三路快排挖坑法快排的非递归实现原创 2022-04-09 10:03:01 · 914 阅读 · 40 评论 -
【二分搜索树BST】
在BST中找最小值可以看到,二分搜索时的最小值一直在左树的最左侧,是中序遍历的第一个。也就是不断向左树递归查找,找到的第一个左子树为空的节点一定是最小值。同理,在BST中找最大值,一定在右树的最右侧,就是右树的最大值删除操作删最值...原创 2022-04-03 22:33:15 · 964 阅读 · 13 评论 -
【二叉树第四弹】— 进阶面试题
1.二叉树的最长直径—力扣第543题2.根据二叉树创建字符串——力扣第606题3.二叉树的构建及遍历—牛客4.根据一棵树的前序遍历与中序遍历构造二叉树—力扣105题5.二叉树的最近公共祖先—力扣236题6.二叉树搜索树转换成排序双向链表—牛客JZ36原创 2022-03-27 08:57:46 · 1841 阅读 · 10 评论 -
【二叉树第三弹】— 使用迭代实现遍历及解题
初识迭代利用迭代解题使用迭代实现层序遍历—力扣102题计算二叉树的节点个数计算叶子节点个数判断是否为对称二叉树—力扣101题判断一棵树是否是完全二叉树—力扣958题求二叉树最大宽度—力扣662题前中后序的迭代实现1.前序遍历—力扣144题2.中序遍历—力扣94题3.后序遍历—力扣145题原创 2022-03-23 17:16:09 · 2044 阅读 · 17 评论 -
【二叉树第二弹】— 基础面试题
统计二叉树中节点的个数求一颗二叉树中叶子节点的个数判断一个元素在二叉树中是否存在求二叉树的高度求二叉树第k层节点的个数二叉树的前序遍历(使用List输出)-- 力扣144号问题判断两棵树是否相同—力扣第100号问题力扣https://leetcode-cn.com/problems/same-tree/判断一棵树是否是另一棵树的子树—力扣第572号问题判断平衡二叉树—力扣第110号问题 记忆化搜索法优化重复递归对称二叉树—力扣第101号问题原创 2022-03-21 16:12:49 · 1238 阅读 · 5 评论 -
【二叉树第一弹】基础知识详解及遍历代码实现
树结构树结构顾名思义,是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下特点:有一个特殊的节点,称为根节点,根节点没有前驱节点 除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继 树是递归定义原创 2022-03-16 14:04:42 · 1053 阅读 · 8 评论 -
【初识Java泛型】
序言当我们要创建一个坐标类Point,输入经度和纬度时,要将它定义为什么类型呢?10.1,30.2 —都是double类型 东经100度,北纬38度—都是字符串 10 , 50—都是整型Object 可以接收所有类型,这时我们能想到使用包装类的自动拆装箱,基本类型自动装箱变为Integer或者Object接收代码示例:public class Point { private Object x; private Object y; public Objec原创 2022-03-14 22:19:44 · 1260 阅读 · 8 评论 -
【堆的应用——topK问题】
topK问题是什么1.力扣面试题17.14号问题——求最小的k个数2.LeetCode 第347问题——前 K 个高频元素3.力扣第373号问题——查找和最小的 K 对数字原创 2022-03-31 16:05:19 · 1528 阅读 · 10 评论 -
【堆和优先级队列】
二叉堆堆的代码实现最大堆代码实现向最大堆中添加一个元素—siftUp操作删除堆顶元素—siftDown操作测试代码方法heapify 堆化优先级队列自定义类型的优先级队列实现Comparator接口——比较器原创 2022-03-29 21:00:10 · 6519 阅读 · 14 评论 -
【集合类List、Map、Set的简单用法】
集合类用来存储元素,集合类中若用到基本数据类型,必须使用包装类。List、Map、Set的简单用法List接口List接口是一个线性表接口, 常用ArryList(动态数组) :要保存的元素个数不确定,动态变化时使用LinkedList(链表)List的增删改查增加:add(任意数据类型 新值)、add(int index , 任意数据类型):在索引为index的位置插入新元素查找: get(int index ):返回 index位置的元素值 、 boolean contain原创 2022-03-10 15:37:29 · 947 阅读 · 15 评论 -
【栈和队列的相互转换】
我们之前讲述过栈和队列,链接放在这里可以去康康哦https://blog.csdn.net/m0_58672924/article/details/122647558https://blog.csdn.net/m0_58672924/article/details/122647558栈和队列的本质是相同的,都只能在线性表的一端进行插入和删除。因此,栈和队列可以相互转换。用栈实现队列—力扣232题题目要求:仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作使用双栈来实现队原创 2022-02-08 03:00:00 · 768 阅读 · 3 评论 -
【循环队列 和双端队列队列】—Java实现
之前,我们使用链表实现了基础队列,链接放在这里可以去康康哟https://blog.csdn.net/m0_58672924/article/details/122647558https://blog.csdn.net/m0_58672924/article/details/122647558之所以没有选择数组来实现,是因为每有一个元素出队,数组中所有剩下的元素都需要向前移动一次,因此没有链表高效。此时,我们就引出了循环队列的概念。循环队列,逻辑上是一个环,物理上依然是线性表。head-指原创 2022-02-07 20:03:43 · 785 阅读 · 9 评论 -
栈和基础队列的实现—Java数据结构
学习栈的原理及基本实现学习队列的原理及基本实现熟练使用 java 中的栈和队列原创 2022-01-23 14:12:11 · 640 阅读 · 10 评论