![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java 课程学习
文章平均质量分 62
这里就是Java的地盘,Java的基础知识,数据结构知识,网络原理知识,操作系统知识,Linux知识,以及代码都在这里啦!
敲木鱼的熊
|(•_•) |•_•) |_•) |•) | )
展开
-
Java-移除链表中指定的元素
思路:建立一个新的空链表,将不是要移除的结点尾插到新链表中public Node removeElements(Node head, int val) { Node result = null; Node last = null; // 记录目前 result 中的最后一个结点 Node cur = head; while...原创 2020-01-07 10:55:11 · 680 阅读 · 0 评论 -
哈希表
1、顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系(数组),因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2ⁿ), 搜索的效率取决于搜索过程中元素的比较次数 。2、理想的搜索方法: 可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。这种结构可以用哈希表来实现。.原创 2020-11-02 20:32:02 · 260 阅读 · 0 评论 -
基于二叉搜索树的插入,查找,删除
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树...原创 2020-11-01 19:01:51 · 250 阅读 · 0 评论 -
Map和Set(常见的使用方法 及 习题)
1:32原创 2020-11-01 13:32:51 · 796 阅读 · 0 评论 -
排序最全的知识总结:基础概念+思路+图解+代码(详细注释)
排序: 使一串记录按照其中的某个或者某些关键字的大小,递增或递减的排列起来的操作。(在以下文章中,通常指排升序)说明: 排序是基于比较的排序;从小到大的排序;判断排序是否是稳定的。稳定性: 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。一、插入排序1、直接插入排序(1)思路: 直接插入排序数组的第一个元素默认是有序的,所以要从1号下标开始比较,先把1号下标的元素放进临时空间,将临时空间的元素与有序数组的最后一个元素进行比较,如果.原创 2020-10-29 18:07:28 · 430 阅读 · 0 评论 -
数据结构第十课——优先级队列(堆:建堆、堆内插入数据、堆内删除数据、堆排序)
1、优先级队列的底层是一个小根堆,故取队顶元素时,取的是最小的元素PriorityQueue的特性: PriorityQueue是线程不安全的、PriorityBlockingQueue(另一种优先级队列)是线程安全的。(1)在使用PriorityQueue时,必须导入PriorityQueue所在的包,即import java.util.PriorityQueue;;(2)PriorityQueue中放置的元素必须能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastExcepti.原创 2020-10-10 20:41:03 · 645 阅读 · 0 评论 -
数据结构第九课——二叉树(相关概念及代码)
一、树的表示孩子兄弟表示法:【图片1】二、二叉树1、定义: 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。2、特点:(1)每个结点最多有两棵子树,即二叉树不存在度大于2的结点;(2)二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树。3、满二叉树和完全二叉树(1)满二叉树:一个二叉树,每一层的结点数都达到最大值,若满二叉树的层数为n,则结点总数是2ⁿ-1;(2)完全二叉树:完全二叉树是效率很高的数据结构,对于.原创 2020-09-30 20:21:40 · 634 阅读 · 0 评论 -
Java 数据结构—二叉树(代码强化)
以下代码都是以此图为基础!!!一级标题二级标题三级标题四级标题五级标题六级标题1、构造一棵二叉树2、前序遍历3、中序遍历4、后序遍历5、 (1)求二叉树里有多少个结点——(2)子问题思路—求结点个数(左子树+右子树+根结点的个数)6、(1)求二叉树里有多少个叶子结点——(2)子问题思路—求叶子结点个数7、求二叉树的高度8、求第k层的结点数。9、在二叉树里查找某一个值(三种方法)10、判断两棵树是否相同11、判断一棵树是否是另一棵树(s)的子树(t),前提是这两棵树都不原创 2020-09-23 18:41:32 · 206 阅读 · 0 评论 -
网络原理(一)——初识
CDKFE原创 2020-03-17 14:05:35 · 223 阅读 · 0 评论 -
文件IO
输入(I)输出(O)要解决的两个问题:1.如何从Input中把数据读到进程中来2.如何把数据输出到Output去1.输入源很多2.整个数据流上会有各种的加工厂1.文件(File):操作系统组织数据的一种方式(硬盘,网络,屏幕都可能被组织成文件)2.Java用来描述文件的作用的是:类 File3.通常文件有三个权限:是否可读,是否可写,可否执行。...原创 2020-03-08 16:20:56 · 85 阅读 · 0 评论 -
创建线程池的练习
//自己实现一个线程池package pool;import sun.awt.geom.AreaOp;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;//固定线程池,一开始就申请一个线程public class ThreadPoolV1 { ...原创 2020-03-01 15:05:10 · 109 阅读 · 0 评论 -
(多)线程——Thread(三)
Object类是所有类的祖先类。原创 2020-02-29 12:14:29 · 76 阅读 · 0 评论 -
关于线程中加锁的详解及示例
import java.util.Scanner;public class WaitDemo { private static Object object = new Object();//调用object.wait();方法时要先创建对象 public static class A extends Thread { @Override publ...原创 2020-02-26 16:34:33 · 618 阅读 · 0 评论 -
(多)线程—Thread(一)
复习进程:一.常见的进程切换的场景1.有一个更高优先级的进程过来 ——抢占式OS2.任务完成(进程结束)3.每个进程都事先分配好了时间片,时间到达后会切换下一个进程4.当进程在等待一个外部事件 ——阻塞二.进程状态就绪:进程处于可运行的状态,只是CPU时间片没有轮转到该进程,则该进程处于就绪状态;运行:进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正...原创 2020-02-21 18:48:28 · 143 阅读 · 0 评论 -
线程的属性及方法的演示
属性的演示:public class ThreadFields { private static class MyThread extends Thread{ @Override public void run() { Thread current=Thread.currentThread(); System...原创 2020-02-21 18:00:15 · 112 阅读 · 0 评论 -
多线程的简单运用
计算:P1.1+2+3+4+…+100_0000P2.1+3+5+7+…+100_0001P3.11+22+33+44+…+10_0000*10_0000public class ThreadPractice { public static class P1 extends Thread { private int count = 100_0000; ...原创 2020-02-21 12:30:17 · 85 阅读 · 0 评论 -
创建线程的方法
public class CreateThread { private static class MyThread extends Thread {//继承自Thread @Override public void run() { // 让该线程去做的事情 } } private static cl...原创 2020-02-19 18:45:33 · 111 阅读 · 0 评论 -
有无多线程的比较
ThreadDemo1:有多线程的写的死循环和无多线程写的死循环public class ThreadDemo1 { //------------------------------------------------------------ private static class MyThread extends Thread { @Override ...原创 2020-02-19 18:29:52 · 107 阅读 · 0 评论 -
Java 数据结构第八课——栈和队列
方法签名:方法的名称+形参列表重载:方法名称相同,形参列表不同<构造方法允许重载>对象的生命周期:new分配空间|属性初始化阶段|完整对象存活|对象被标记为垃圾,但未回收时期|静态方法中无法访问普通属性和调用普通方法,在普通方法中可以访问静态属性和调用静态方法栈<偏向顺序表> 队列栈:在哪头插,在哪头删<先进后出,后进先出>队列: 在一头插...原创 2020-01-20 16:08:23 · 97 阅读 · 0 评论 -
承上(顺序表,链表)启下(泛型)
若要在三个函数里完成一项功能:例如之前的"复杂链表的复制":Main:负责测试:1>测试用例编写2>测试数据的构造3>测试数据打印Solution:解决明确的问题Node:链表的结点**Main.java:**public class Main { public static void main(String[] args) { Sol...原创 2020-01-19 16:49:11 · 174 阅读 · 0 评论 -
链表的深拷贝(复杂链表的复制)
Main.java:public class Main { public static void main(String[] args) { Solution solution = new Solution();//创建一个solution对象 testComplexListCopy(solution); //复杂链表的复制 //te...原创 2020-01-08 15:42:39 · 927 阅读 · 0 评论 -
Java-反转链表(第一种方法)
思路:将每两个结点之间的箭头反转,然后将最后一个结点作为新的头结点,返回新的头结点,即是反转(根据循环一步步来)public ListNode reverseList(){ ListNode prev=null; ListNode newHead=null; ListNode cur=this.head; while(cur!=null){ ...原创 2020-01-06 19:39:27 · 59 阅读 · 0 评论 -
Java 数据结构第七课:顺序表_链表(链表)
关于表的概念:1.线性表: (linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表/链表/栈/队列/字符串···2.顺序表: 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下,采用数组存储。在数组上完成数据的增删查改。静态顺序表:使用定长数组存储动态顺序表:使用动态开辟的数组存储3.链表:...原创 2019-12-28 18:20:46 · 205 阅读 · 0 评论 -
关于顺序表的详细理解及注意事项
需要注意的事项:1.顺序表在插入数据时,需考虑空间的大小,空间不够要扩容2.在插入数据时要考虑下标是否符合要求3.删除数据时要考虑顺序表是否为空再详细过程可参照:public class Main{ private int[] array; private int size; public Main(){ //构造方法,初始化!(构造方法:修饰符+类名称...原创 2019-11-16 17:02:22 · 2191 阅读 · 0 评论 -
二分查找
二分查找思想:能进行二分查找的一定是一个有序的空间!mid=(left+right)/2,如果,目标值大于下标为mid的值,则应将mid的值赋给left若,目标值小于下标为mid的值,则应将mid的值赋给right;若,目标值刚好和下标为mid的值相等,则返回mid。public class Excipise1112{ public static int binarySea...原创 2019-11-12 20:38:44 · 101 阅读 · 0 评论 -
关于多态
1.方法的多态性:1>.方法的重载:同一个方法名称可以根据参数的类型或个数不同调用不同的方法体2>.方法的覆写:同一个父类的方法,可能根据实例化子类的不同也有不同的实现。2.对象的多态性:(前提:方法覆写)1>.对象向上转型:父类 父类对象=子类实例2>.对象向下转型:子类 子类对象=(子类) 父类实例范例:向上转型:class Person{ ...原创 2019-11-12 19:35:23 · 109 阅读 · 0 评论 -
super & final
this与super的区别:一,super 关键字1.super()主要是子类调用父类的构造方法时才使用的2. 在进行覆写的操做过程中 super.方法/super.属性 用于在子类中明确调用父类中的属性和方法3. this和super在使用上非常相似,但两者最大的区别是super是子类访问父类的操作,而this是本类的访问处理操作4. 注意能使用 super.方法 一定要明确...原创 2019-11-09 19:44:17 · 115 阅读 · 0 评论 -
关于覆写——Override
1.覆写:子类定义了与父类相同的方法或属性,这样的操作就称为覆写(Override)2.子类定义了与父类方法名称、参数类型及个数完全相同的方法,但是被覆写不能拥有比父类更为严格的访问控制权限。3.当调用某个方法的时候,如果该方法已被子类所覆写,则调用的一定是被覆写过的方法。class Person{ public void print(){ System.out.p...原创 2019-11-09 17:34:29 · 826 阅读 · 0 评论 -
关于继承——extends
一、继承1.子类在一些书中也被称为派生类,父类也被称为超类(Super Class)。2.子类可进行代码的扩充(扩充属性和方法)。3.继承的主要作用是对类进行扩充以及代码的重用class 子类 extends 父类4.若父类里没有提供无参构造,那么这个时候必须使用super()指明你要调用的父类构造方法5.Java只允许单继承,不允许多重继承,但可以多层继承。即一个子类只能继承一个...原创 2019-11-09 16:41:44 · 127 阅读 · 0 评论 -
Java SE第五课:面向对象编程—类与对象(下)
1.定义类的语法:修饰符 class 类名称{1>.属性(定义属性:修饰符 变量类型 变量名称;<例>public String s;<若没有初始化,则默认为类型的默认值>)2>.普通方法(修饰符 返回值类型 方法名称(形参列表){}<例>public static int[] rorate(int[] a,int k){...原创 2019-10-22 22:31:11 · 107 阅读 · 0 评论 -
Java SE第四课:数组的定义与使用
编译环境:Notepad++.1.解答第三课留下的课后题:1>.打印九九乘法表: //multiplicationTable 乘法表public class Java练习{ public static void multiplicationTable(){ for(int i=1;i<10;i++) { for(int j=1;j&...原创 2019-07-21 23:37:30 · 190 阅读 · 0 评论 -
Java SE第五课:面向对象编程—类与对象(上)
1.类和对象<理解起来有点抽象>1>.类?→相当于设计稿对象?→设计并制作出来的成品面向对象编程:状态(属性)+行为(方法)2>.面向对象的三大特性:封装、继承、多态2.语法进行类定义的顺序:①定义属性;②定义构造方法;③定义普通方法.1>.定义类的语法:修饰符(modifier) class 类名称{ ①属性 / 静态属性 ②方法...原创 2019-07-23 17:11:26 · 170 阅读 · 0 评论 -
Java 数据结构第六课:时间复杂度和空间复杂度
**复杂度?**→粗略衡量算法好坏的刻度尺(工具)<指的是最坏情况下的时间复杂度>两个维度: 快慢 : 时间复杂度使用空间情况 : 空间复杂度1.时间复杂度:算法的基本操作的执行次数为算法的时间复杂度1>.前提:如果指定CPU的情况下,单位时间内运行的基本指令个数是固定的;算法计算的快慢和输入数据的规模是有关系的。如果一个算法需要的指令比...原创 2019-07-24 16:02:57 · 249 阅读 · 0 评论 -
Java SE—顺序表的增(头/中/尾)/删/(头/中/尾)查/改/
// 顺序表的元素类型 intpublic class MyArrayList1 { // 属性是什么 private int[] array; // 代表的是存在数据的数组 // array.length 代表的是数组的容量 private int size; // 记录顺序表的已有数据个数 // 构造方法 public MyArrayList1() { ...原创 2019-07-26 23:25:37 · 80 阅读 · 0 评论 -
Java SE—链表的插入(头/尾)和删除(头/尾)
// 前驱 prev previous// 后继 nextclass Node { int val; // data | element Node next; // 如果 next == null 表示是最后一个结点 Node(int val) { //定义构造方法,省略了修饰符 this.val = val; this.next = null; } ...原创 2019-07-28 09:15:41 · 185 阅读 · 0 评论 -
Java 数据结构第七课:顺序表_链表(顺序表)
数据结构中顺序表,链表的操作及方法:1.初始化→构造方法2.增\删\查\改→普通方法3.销毁→可能不存在一.线性表线性表:(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通...原创 2019-07-29 16:06:47 · 225 阅读 · 0 评论 -
Java SE第二课:数据类型与运算符
1>.类名称:每个单词的首字母大写,其余小写,后面可跟数字(类名必须和文件名相同)原创 2019-09-16 22:19:53 · 85 阅读 · 0 评论 -
Java SE第三课:逻辑控制和方法使用
一.逻辑控制1.分支结构(标准语句)(1)if语句if(布尔表达式){ //条件满足时执行代码}else{ //条件不满足时执行代码}--------------------------------------------------------if(布尔表达式){ //条件满足时执行代码}else if{ //前者条件不满足,后者条件满足时执行...原创 2019-09-17 23:05:42 · 96 阅读 · 0 评论 -
Java SE第四课:数组相关代码—冒泡排序,求平均值,旋转数组,偶数在右奇数在左
1.冒泡排序import java.util.Arrays;public class Test0921 { //把输出函数封装到一个函数里,打印时直接调用 public static void testBubbleSort(int[] a){ System.out.println("排序前:"); System.out.println(Array...原创 2019-09-21 14:12:06 · 225 阅读 · 0 评论 -
Java SE 计算日期
public class Date { public int year; public int month; public int day; public int[] day_of_month ={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //构造方...原创 2019-09-21 17:32:07 · 119 阅读 · 0 评论