
JAVA
文章平均质量分 94
来学习的小张
加油学习,努力进步
展开
-
Java中反射、枚举及lambda表达式的使用
目录一、反射1.1 定义1.2 用途1.3 反射基本信息1.4 与反射相关的类1.5 Class类(反射机制的起源 )1.6 Class类中的相关方法1.7 获得Class对象的三种方式1.8 反射的使用1.9 反射优点和缺点二、枚举2.1 Enum 类的常用方法2.2 枚举的优点和缺点三、Lambda 表达式总结一、反射1.1 定义Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到,那原创 2022-03-02 18:01:05 · 1437 阅读 · 5 评论 -
搜索树与哈希表详解
目录一、搜索树1.1 概念1.2 查找1.3 插入1.4 删除1.5 性能分析1.6 与java集类的关系二、哈希表2.1 概念总结一、搜索树1.1 概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值;它的左右子树也分别为二叉搜索树。如:1.2 查找若根节点不为空:如果根节点==查找key 返回当前节点;如果根节点 >查找key在原创 2022-02-27 17:24:49 · 1302 阅读 · 20 评论 -
Java中关于内部类详解
一、 本地内部类二、实例内部类三、静态内部类四、匿名内部类原创 2022-02-25 17:27:54 · 852 阅读 · 0 评论 -
动态规划问题经典例题
DP(Dynamic Programming)定义:动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。动态规划具备了以下三个特点:把原来的问题分解成了几个相似的子问题。所有的子问题都只需要解决一次。储存子问题的解动态规划的本质,是对问题状态的定义和状态转移方程的定义(状态以及状态原创 2022-02-23 22:07:13 · 8009 阅读 · 11 评论 -
面试相关高频算法考点4
目录一、求二叉树深度二、异或理解,求数组中只出现一次的两个数三、滑动窗口,求和为S的连续正数序列总结一、求二叉树深度牛客链接描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。方法一:使用递归方式分别遍历根的左和根的右,然后取两边中较大的一边,最后再加上有根节点的那一层就是整棵树的深度。public class Solution { public int TreeDepth(TreeNod原创 2022-02-15 20:26:38 · 754 阅读 · 15 评论 -
面试相关高频算法考点3
目录一、字符串的排列二、使用步骤一、字符串的排列牛客链接描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串 abc,acb,bac,bca,cab 和 cba 。import java.util.ArrayList;import java.util.*;public class Solution { //交换字符 public void Swap(char[] str,int i,int j){原创 2022-02-12 23:24:14 · 519 阅读 · 13 评论 -
面试相关高频算法考点2
目录一、替换空格二、从尾到头打印链表一、替换空格牛客链接描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:根据题目描述中将一个字符串中的每个空格替换成“%20”,则相比于原字符串长度每出现一个空格进行替换时都会增加2个位置的长度,因此我们可以先计算出整个字符串中增加的长度,然后用一个指针指向原来字符串长度的结尾位置,另一个指针指向增加长度之后其字符串长度结尾的位置,依次从后往原创 2022-02-07 20:02:17 · 620 阅读 · 5 评论 -
数组相关高频算法考点
文章目录一、调整数组顺序使奇数位于偶数前面二、判断二维数组中是否包含某数三、旋转数组的最小数字四、数组中出现次数超过一半的数字一、调整数组顺序使奇数位于偶数前面牛客链接描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:此题要求奇数与偶数的相对位置不发生改变,并且奇数要位于偶数的前面,此时我们可以利用插入排序的思想:让奇数插入到数组的前面,偶数统一往后移动,以此达原创 2022-01-30 22:05:19 · 1257 阅读 · 9 评论 -
Java常见的排序算法详解
目录一、直接插入排序二、使用步骤1.引入库一、直接插入排序 public static void insertSort(int[] arr){ for (int i = 1; i < arr.length; i++) { int tmp = arr[i]; int j = i - 1; for ( ; j >= 0 ; j--) { if (arr[j] >原创 2022-01-25 22:49:26 · 991 阅读 · 12 评论 -
Java关于二叉树的16个经典例题
目录一、二叉树的前序遍历二、二叉树的中序遍历三、二叉树的后序遍历四、判断两棵树是否相同五、判断一棵树是否是另一棵树的子树六、判断一棵树是否为平衡二叉树(AVL树)七、判断一棵树是否为对称二叉树一、二叉树的前序遍历144.二叉树的前序遍历方法一:class Solution { List <Integer> tmp = new ArrayList<>(); public List<Integer> preorderTraversal(Tree原创 2022-01-22 19:49:39 · 1932 阅读 · 7 评论 -
Java优先级队列(堆)及对象的比较
目录一、二叉树的顺序存储1.1 存储方式1.2 下标关系二、堆(Heap)2.1 堆的相关概念2.2 操作-向下调整一、二叉树的顺序存储1.1 存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。1.2 下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不原创 2022-01-13 17:19:50 · 727 阅读 · 17 评论 -
Java中关于二叉树详解
目录一、树形结构1.1 相关概念1.2树的表示形式1.3树的应用:文件系统管理(目录和文件)二、二叉树2.1相关概念2.2 二叉树的基本形态2.3 两种特殊的二叉树2.4 二叉树的性质2.5 二叉树的存储2.6 二叉树的基本操作2.6.1二叉树的遍历2.6.2 二叉树的基本操作总结一、树形结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,原创 2022-01-10 20:49:30 · 3225 阅读 · 14 评论 -
Java中栈和队列的模拟实现及经典例题
文章目录一、栈Stack1.栈的基本概念2.栈的基本操作3.利用顺序表模拟栈的实现二、队列Queue1.队列基本概念2.队列的基本操作3.利用链表模拟队列的实现总结一、栈Stack1.栈的基本概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈原创 2022-01-06 20:58:38 · 936 阅读 · 4 评论 -
Java中关于泛型、包装类及ArrayList介绍
目录一、泛型1.1 泛型类的定义1.2 泛型类的使用1.3 泛型总结二、包装类2.1基本数据类型和包装类直接的对应关系2.2 包装类的使用,装箱(boxing)和拆箱(unboxing)2.3 自动装箱(autoboxing)和自动拆箱(autounboxing)三、List 的使用3.1 ArrayList简介3.2 ArrayList的构造3.3 ArrayList的遍历3.4 ArrayList的常见操作3.4.1 删除 index 位置元素(remove)3.4.1尾插(add)3.4.2将元素插入原创 2021-12-05 11:34:49 · 1723 阅读 · 19 评论 -
Java集合框架中Collection及Map接口与Set介绍
目录一、类和接口总览二、Collection接口常用方法说明2.1将元素放到集合中add2.2 删除集合中的所有元素clear()2.3判断集合是否没有任何元素isEmpty()2.4 删除集合中元素remove()2.5 判断集合中元素个数size()2.6 返回一个装有所有集合中元素的数组三、Map接口常用方法说明3.1 根据指定的k查找对应的v(get)3.2 将指定的 k-v 放入Map(put)3.3 判断是否包含key(containskey)3.4 判断是否包含value(containsva原创 2021-12-02 15:36:09 · 808 阅读 · 12 评论 -
Java中关于异常的基本用法介绍
目录前言一、常见的异常1.1算数异常1.2数组下标越界异常1.3空指针异常1.4克隆异常1.5 输入不匹配异常二、防御式编程三、异常的基本用法3.1捕获异常关于异常的处理方式关于 "调用栈"finally 表示最后的善后工作, 例如释放资源总结前言所谓异常指的就是程序在运行时出现错误时通知调用者的一种机制。有些错误是这样的, 例如将 System.out.println 拼写错了, 写成了system.out.println. 此时编译过程中就会出错, 这是 “编译期” 出错。而运行时指的是程序已经编原创 2021-11-25 11:20:31 · 653 阅读 · 17 评论 -
Java中关于String类详解
目录一、创建字符串二、字符串常量池总结一、创建字符串常见的创建字符串的三种方式:public class test01 { public static void main(String[] args) { //方式一 String s = "zbd"; System.out.println(s); //方式二 String str = new String("hello"); System.ou原创 2021-11-20 12:02:39 · 1583 阅读 · 10 评论 -
Java面向对象编程详解
目录一、包1.1静态导入1.2将类放到包中1.3包的访问权限控制二、继承2.1 super关键字super与this的区别2.2 protected 关键字Java 中对于字段和方法共有四种访问权限2.3 final 关键字三、组合四、多态4.1向上转型4.2 动态绑定重载和重写的区别4.3 向下转型4.4 理解多态五、抽象类六、接口实现多个接口三个常用的接口`Comparable``Comparator``Cloneable`一、包包(package) 是组织类的一种方式,使用包的主要目的是保证类的原创 2021-11-13 21:48:38 · 1546 阅读 · 13 评论 -
Java中顺序表及链表详解
目录一、线性表二、顺序表应用示例:实现一个动态顺序表1.打印顺序表2.获取顺序表长度3.在 pos 位置新增元素4.判定是否包含某个元素5.查找某个元素对应的位置6.获取pos位置的元素7.给 pos 位置的元素设为/更新 value8.删除第一次出现的关键字key9.清空顺序表总结一、线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但原创 2021-11-03 17:22:35 · 1955 阅读 · 17 评论 -
JAVA中对类和对象的认识
目录一、面向对象二、类和类的实例化2.1类2.2类的实例化2.3类的成员2.3.1 字段/属性/成员变量认识 null2.3.2 方法 (method)2.3.3 static 关键字a.修饰属性b.修饰方法c.代码块d.修饰类三、封装3.1 private实现封装3.2 getter和setter方法四、构造方法this关键字五、代码块匿名对象toString方法一、面向对象面向对象(OOP)的程序是由对象组成的,每个对象包含对用户公开的特定功能部分。程序中的很多对象来自标准库,还有一些是自定义的。究原创 2021-10-30 22:00:03 · 1361 阅读 · 23 评论 -
JAVA中对数组的理解及数组经典例题详解
文章目录前言一、创建数组创建数组的三种方式二、 数组的使用1.获取长度 & 访问元素2.遍历数组2.1使用for循环2.2使用for each循环2.3Arrays类的toString 方法三、数组作为方法的参数3.1打印数组的内容3.2理解引用类型3.3认识null3.4 初识 JVM 内存区域划分四、数组作为方法的返回值五、数组练习5.1 数组转字符串5.2 找数组中的最大元素5.3 求数组中元素的平均值5.4 查找数组中指定元素(顺序查找)5.5 查找数组中指定元素(二分查找)5.6检查数组的原创 2021-10-27 11:14:08 · 1697 阅读 · 11 评论