java
太阳是我啃圆的 i
这个作者很懒,什么都没留下…
展开
-
解决 PageInfo 返回的 total 不正确
解决 PageInfo 返回的 total 不正确原创 2021-03-15 15:25:53 · 6409 阅读 · 2 评论 -
Java中两个自定义对象List列表取交集(intersection())和差集(removeAll())
可以直接使用第三方库org.apache.commons.collections4.ListUtils首先针对结合中的对象需要重写hashcode()和equals()方法。这是因为intersection()和removeAll()会去利用对象的这两个方法来比较对象是否是同一个对象。假设我们现在有两个集合list1和list2要得到在list1中不包含在list2中的集合// 差集List<Integer> result = ListUtils.removeAll(list1,原创 2021-02-24 15:25:00 · 3643 阅读 · 0 评论 -
Java8中List转Map(Collectors.toMap())的使用
Java8 .stream().map().collect()原创 2020-12-16 17:23:36 · 1381 阅读 · 0 评论 -
Java中HashMap、LinkedHashMap和TreeMap的区别使用场景
HashMap中k的值没有顺序,常用来做统计。LinkedHashMap吧。它内部有一个链表,保持Key插入的顺序。迭代的时候,也是按照插入顺序迭代,而且迭代比HashMap快。TreeMap的顺序是Key的自然顺序(如整数从小到大),也可以指定比较函数。但不是插入的顺序。Hashtable与 HashMap类似,它继承自Dictionary类、不同的是:它不允许记录的键或者...转载 2020-04-28 16:01:58 · 482 阅读 · 0 评论 -
Java 多线程(五) —— 线程池的简单使用
Java 多线程(一) —— 认识线程、创建一个线程Java 多线程(二) —— Thread类常见方法、线程的状态Java 多线程(三) —— 线程安全问题Java 多线程(四) —— wait()、notify()、notifyAll()使用,和sleep()的对比前言为什么要用线程池?在运用多线程的时候,每次的创建和销毁线程是很费时间的,而为了提高服务程序的效率,减少线程创建和销...原创 2020-04-22 19:07:38 · 134 阅读 · 0 评论 -
Java 多线程(四) —— wait()、notify()、notifyAll()使用,和sleep()的对比
前言先简单了解一下 wait() 和 notify() :1.wait() 的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。“直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”)2.notify()和notifyAll() 的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,...原创 2020-04-20 17:21:05 · 210 阅读 · 0 评论 -
Java 多线程(三) —— 线程安全问题
线程安全概念: 我们可以概括的认为线程安全就是在多线程环境下代码运行的结果是一定符合我们预期的,与在单线程环境下运行的结果一定一致,我们就说这个程序是线程安全的。线程不安全一、演示线程不安全**示例一:操作共享属性 **观察如下代码和执行结果:public class Main { private static long n = 0; public static cla...原创 2020-04-16 18:00:59 · 208 阅读 · 0 评论 -
Java 多线程(二) —— Thread类常见方法、线程的状态
一、Thread类常见方法1. Thread常见构造方法方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线程对象Thread(String name)创建线程对象并命名Thread(Runnable target, String name)使用Runnable对象创建线程对象并命名...原创 2020-04-14 17:41:31 · 396 阅读 · 0 评论 -
Java中 方法重载和重写
一、重载方法重载:1.是在同一个类中2.方法名相同,参数列表不同(参数类型不同或者参数个数不同)3.对返回类型没有要求,对访问修饰限定符没有要求二、重写方法重写:1.在子类中重写父类的方法2.子类中重写的方法必须拥有与父类中被重写的方法相同的方法名,参数列表和返回类型也必须相同3.子类中重写的方法访问修饰限定符范围不能低于父类方法的访问修饰限定符范围访问修饰限定符范围 : pr...原创 2020-04-13 17:18:39 · 125 阅读 · 0 评论 -
Java 多线程(一) —— 认识线程、创建一个线程
一、线程概念进程:程序的一次动态执行过程,是系统分配资源的最小单位。线程:系统调度的最小单位,是在进程的基础上划分的更小的程序单元,一个进程在其执行过程中可以产生多个线程,系统以线程为单位进行CPU时间片分配。在进程中至少有一个线程。进程与线程的区别:线程是进程划分成的更小的程序单元,不同的是各进程之间是独立的,而各线程之间却是互相影响,共享资源的。二、多线程1.概念多线程就是多...原创 2020-04-10 16:18:02 · 144 阅读 · 0 评论 -
java哈希表开散列(哈希桶)实现(HashMap、HashSet)
哈希表一、概念在顺序结构和平衡树中,元素与其存储下标没有直接的对应关系,每查找一个元素时,必须要遍历这个结构进行多次比较才能找到这个元素,而现在我们想不经过任何比较,一次就从表中查找到这个元素,通过某些方法实现的这种存储结构就是哈希表。二、基本思想在哈希表中发通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。在哈希表中主要进行两...原创 2020-03-24 21:34:14 · 902 阅读 · 0 评论 -
java 实现String类compareTo()、contains()、indexOf()、split()方法
在学习了java中的String类之后,深刻认识到了String类的重要性,因此就自己实现了几个String类的方法。问题:1.实现方法 compareTo, 能够实现按照字典序比较字符串大小。2.实现方法 contains, 能够判定字符串中是否包含子串。3.实现方法 indexOf, 能够找出字符串子串存在的位置。4.实现方法 split, 能够指定分割符将字符串拆分成字符串数组(不...原创 2019-12-09 22:52:05 · 364 阅读 · 0 评论 -
java中的二叉搜索树
二叉搜索树一、概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树如下图所示就是一个二叉搜索树:二、搜索树操作1.查找如果根节点的值等于要查找的值,返回true如果根节点的值大于要查找的值,那么在其左子树查找...原创 2020-03-23 19:23:54 · 277 阅读 · 2 评论 -
java常见七大排序算法总结
一、定义排序就是将一组“无序”的对象按照某种规则使其变得“有序”的过程。二、术语说明1.稳定: 排序序列中如果a=b,原序列中a在b的前边,排序之后a仍然在b的前边2.不稳定: 排序序列中如果a=b,原序列中a在b的前边,排序之后a可能在b的后边三、算法思想与实现1.冒泡排序1.1 算法描述在要排序的序列中,对当前还未排好序的范围中的所有数,相邻的两个数依次进行比较,让较大的数向上...原创 2020-02-22 18:25:34 · 304 阅读 · 0 评论 -
(堆、快速、归并)排序总结及java实现
1.堆排序(Heapsort)5.1算法描述堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。是一种不稳定的排序算法。排序过程描述:1.将待排序数组(R1,R2….Rn)构建成大根堆,此堆为初始的无序区2.将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,...原创 2020-03-08 20:15:38 · 232 阅读 · 0 评论 -
java堆和优先级队列PriorityQueue的使用及实现
在谈优先级队列之前先简单说一下堆的概念。堆(heap)一、概念1.堆在逻辑上是一棵完全二叉树2.物理上是保存在数组中3.满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆4.反之,则是小堆,或者小根堆,或者最小堆5.堆的基本作用是,快速找集合中的最值二、大小根堆的建立向下调整实现调整过程:1.判断 index 位置有没有孩子1)index 如果已经是叶子...原创 2020-03-03 15:28:05 · 1084 阅读 · 0 评论 -
二叉树的前序、中序、后序、层序遍历,Java实现(递归、非递归)
关于二叉树的内容,我觉得二叉树最核心的地方就是它的几种遍历方式,基本上所有的问题都是围绕着几种遍历方式来的。因此就在这总结一下这几种遍历方式。前序遍历一、简介前序遍历(DLR),是二叉树遍历的一种,也叫做先根遍历、先序遍历,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则...原创 2020-02-26 17:01:18 · 6635 阅读 · 2 评论 -
Java中static关键字使用总结
static关键字的用法在JAVA的学习中深刻感觉到static关键字的重要,为了加深理解,写一篇博客总结一下还是非常有必要的。static表示“全局”或者“静态”的意思,Java中被 static 修饰的成员称为静态成员或类成员,它是属于整个类所共有,也就是该类的所有对象所共有,不止属于某个对象, static 可以修饰变量、方法和代码块.用一句话来总结static关键字的基本作用就是:方...原创 2020-02-03 17:12:50 · 365 阅读 · 0 评论 -
Java中final的用法
final的用法在JAVA中经常会见到final关键字,每次见到final感觉对它是既熟悉又陌生,因此觉得有必要总结一下final的用法。final故名思意即最终、不可变。final作为JAVA中的一个关键字,可以用来修饰类、方法和变量(局部变量和成员变量)。一、修饰类final修饰类时,表明这个类不能被继承,比如java中的String类及Integer等包装类。需要注意的是类中所有的...原创 2020-01-20 18:09:33 · 2724 阅读 · 0 评论 -
java String类常用方法总结
作为java中最常用的一个类,我觉得有必要在这里总结一下String类的一些常用方法。1.字符与字符串简单理解一下就是将字符串与字符数组转换的相关操作。1)构造方法public String(char[] value)//将字符数组中所有内容变为字符串public String(char[] calue, int offset, int count)//将数组中的部分内容变为字符串2...原创 2019-12-14 23:31:24 · 173 阅读 · 0 评论 -
java 泛型和包装类的使用
一、泛型1.泛型的引入我们知道一个顺序表中可以存放int型的对象,那么如果要存入指向 Person 类型对象的引用的顺序表,请问应该如何解决?首先我们可以想到基类的引用可以指向子类的对象,因为Object是所有类的祖先类,所以我们将顺序表的元素类型定义成 Object 类型,这样我们的 Object 类型的引用可以指向 Person 类型的对象看这样一段代码:public class M...原创 2019-12-04 14:55:55 · 432 阅读 · 0 评论 -
java 集合框架认识(1)集合框架的简单认识、接口及其实现类的介绍
java集合框架概述:Java中集合框架可以分为两类:Collection接口和Map接口1.集合框架图:其中橘棕色表示接口、蓝色表示抽象类、棕色表示类原创 2019-12-03 19:32:35 · 316 阅读 · 0 评论 -
java 抽象类和接口的初步认识
在谈接口前先说一下另一个东西:抽象类、抽象方法1.抽象类1.1 抽象类首先抽象类也是一个类,可以用来继承。和普通类一样也有构造方法,属性,方法,静态修饰成分等,抽象类必须遵守的几条规则:1)抽象类必须用abstract 修饰,用 abstract 修饰的类就是抽象类2)抽象类中可以没有抽象方法3)抽象类不能实例化对象new 抽象类(); 这样的实例化是不正确的public abs...原创 2019-12-01 22:00:13 · 116 阅读 · 0 评论 -
java 对多态的初步认识
一、对多态的理解:1.多态是同一个行为具有多个不同表现形式或形态的能力。2.多态就是同一个接口,使用不同的实例而执行不同操作。3.多态性是对象多种表现形式的体现。二、多态存在的三个必要条件1.继承2.方法覆写3.父类引用指向子类对象三、具体运用首先先看两段代码:父类Bike{}:public class Bike { int price; String col...原创 2019-11-27 15:18:11 · 143 阅读 · 0 评论 -
java对继承的初步认识
学习了继承后,先来简单总结一下目前所学的知识一、继承:首先要了解什么是继承:简单理解一下就是儿子继承父亲的东西,在java中表现为子类继承父类的某些东西,比如方法子类可以理解为一种特殊的父类。就像有一个自行车类,它的子类是一个山地自行车类,而山地自行车也是一种自行车基本知识:1.定义语法:class 子类 extends 父类{}父类自行车类:class Bike{}子类山...原创 2019-11-27 14:04:52 · 178 阅读 · 0 评论 -
java类和对象的知识补充
在更深入的学习类和对象知识后,对类和对象又有了更多的认识。一、对象的初始化:关于对象我们需要了解的有以下几个方面1.对象的生命周期2.了解对象在内存(栈区、堆区、方法区)中的堆区3.哪些内容在对象中,我目前学到的就是属性在对象中初始化一个对象:主要分为两个阶段:比如:A a = new A();1.new阶段1)根据方法区中的信息,计算对象大小2)在堆中开辟内存空间2)全部...原创 2019-11-26 21:11:36 · 102 阅读 · 0 评论 -
java中的方法调用
简述:在java中有普通方法、静态方法、构造方法。在类中、类中的方法中分别调用这些方法在语法上是有区别的。在类中和在类外调用也是有区别的。1.在同一个类中:1)在普通方法中调用class A{ void methodA(){} //普通方法 static void methodB(){} //静态方法 void ...原创 2019-11-24 21:25:22 · 218 阅读 · 0 评论 -
java对类和对象的初步认识
首先我们要了解JAVA是面向对象的,关注的是对象,把一件事物拆分成不同的对象,靠对象之间的交互完成。1.面向对象面向对象 注重的是对象,也就是在过程中所涉及的主体,举一个例子:比如一个将大象放入冰箱的操作面向过程:1.打开冰箱,2.放入大象,3.关冰箱门面向对象:打开冰箱,储存,关闭都是对冰箱的操作,是冰箱的行为。而冰箱本身就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中。...原创 2019-11-14 15:01:23 · 132 阅读 · 0 评论 -
java中关于数组的定义和使用
数组1.什么是数组?数组本质上就是能“批量”的创建相同类型的变量(注意数组中包含的变量一定是相同类型的)。2.数组的创建数组的创建并初始化有三种方式:1.基本语法:变量类型[] + 数组名称 = new 变量类型[]{元素1,元素2,元素3};注意: 这种用法new后边的[]中不能有数字代码示例:int[] a = new int[] (1,2,2);2.基本语法:变量名[] + ...原创 2019-11-13 15:19:36 · 161 阅读 · 0 评论 -
有关java输出和输入的用法
java中有关输入和输出的用法输入:1.采用java自带的包 import java.util.Scanner;代码示例:import java.util.Scanner;public class InAndOut{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in);...原创 2019-11-07 22:42:11 · 269 阅读 · 0 评论 -
有关运算符的相关知识
运算符运算符顾名思义就是用来进行某些算法的符号。1.运算符分类:运算符主要有算数运算符、逻辑运算符、关系运算符、位运算符、条件运算符。算数运算符:基本的+ - * /四则运算以及一个%取余运算。都很简单不做介绍,唯一需要注意的一点是在除法运算时运算结果需要为double类型。增量赋值运算符 += -= *= /= %=自增/自减运算符 ++ --关系运算符:关系运算符:== !...原创 2019-10-29 20:58:36 · 271 阅读 · 0 评论 -
有关变量的相关知识点
变量:变量指的是程序运行的时候开辟出一块内存空间来保存一些可变的数据。1.变量类型:变量有整形、长整型、双精度浮点型、单精度浮点型、字符型、字节型、短整型、布尔型、字符串类型。整型变量:基本语法格式:int 变量名 = 初始值;如:int num = 10;int表示变量的类型是一个整形;在java中=表示赋值,意思是给变量一个初始值;在java中,一个int型变量占4个字节,...原创 2019-10-28 23:29:22 · 855 阅读 · 0 评论