Java
java 学习笔记
HardyDragon_CC
谦虚使人进步
展开
-
Java IO 练习Demo
package com.cwl;import org.junit.Test;import java.io.*;import java.net.URL;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class IOStreamTest { private static class A implements Serializable { private int x; .原创 2021-10-07 16:21:10 · 115 阅读 · 0 评论 -
一个关于java泛型的疑问
之前对如下代码的区别不了解Stack<Integer> stack = new Stack<Integer>();Stack stack1 = new Stack();现在写个demo理解下,主要区别为是否指定了泛型。import java.util.ArrayList;import java.util.Stack;/** * @Description: TODO * @author: HardyDragon * @date: 2021年07月28日 22:07原创 2021-07-28 22:24:22 · 80 阅读 · 0 评论 -
BFS/DFS处理二维矩阵抽象问题例题
这是自己搜集的有关bfs和dfs关于二维01数组的例题BFS烂橘子01矩阵图像渲染DFS岛屿数量岛屿最大面积BFS烂橘子这里队列存储数组下标的方式和其他的不同class Solution { int[] dr = new int[]{-1, 0, 1, 0}; int[] dc = new int[]{0, -1, 0, 1}; public int orangesRotting(int[][] grid) { int R = grid.length, C原创 2021-07-15 21:12:12 · 157 阅读 · 0 评论 -
java--动态代理学习笔记
动态代理学习笔记什么是代理设计模式?为什么使用动态代理?练习Demointerface UserServiceclass UserServiceImplclass ProxyInvocationHandler调用什么是代理设计模式?分为静态代理和动态代理。将原有业务代码不变更作为原则,通过代理类来实现对原有业务的功能扩展。为什么使用动态代理?使用动态代理解决静态代理需要手写多个代理类应对不同业务的情况练习Demointerface UserServicepackage ProxyDemo;原创 2021-07-14 16:53:45 · 74 阅读 · 0 评论 -
java--快速排序
快速排序什么是快速排序?双边循环法demo调试单边循环法什么是快速排序?排序动画演示网站属于交换排序的一种,利用了分治的思想,将序列根据 pivot (中间值) 划分为两个序列,在 pivot 左边的元素全部都比 pivot 值小,在右边的比 pivot 大,对子序列递归操作。双边循环法demo递归,利用辅助函数确定 pivot 的索引并排序。package sort;/** * @Description: TODO * @author: HardyDragon * @date: 20原创 2021-07-07 15:44:48 · 66 阅读 · 0 评论 -
java实现冒泡排序
java实现冒泡排序前言BubbleSort 冒泡排序调试使用交换 flag 优化调试总结前言C语言实现冒泡排序 在主函数调用之前使用C实现过冒泡,但是不够精炼,描述不够简洁,便使用java来重新输出一下。BubbleSort 冒泡排序排序动画演示网站(建议收藏)冒泡排序是将一个无序的序列(例如数组),从头开始两两比较交换直到有序的过程,每轮两两交换可以让后面部分元素有序。例如,{3,9,6} 当交换比较到 {3,6,9} 后两个元素(数组大小 3 - 1 = 2 )有序时,整体有序。下原创 2021-07-06 11:07:11 · 106 阅读 · 0 评论 -
设计模式笔记--工厂模式
设计模式笔记--工厂模式什么是工厂模式?实例什么是工厂模式?有一个接口和一些实现该接口的实现类,一个工厂类可以根据需求返回不同实现类的实例对象。当需要实现类的对象时,不通过实现类直接实例化,而是告诉工厂类自己的需求来获得实例对象;实例Gitee Web IDE...原创 2021-06-29 22:23:19 · 74 阅读 · 0 评论 -
java笔记(6)泛型(generics)、序列化
泛型提供了编译时类型安全检测机制,即编译时检测类型是否错误,本质是参数化类型。泛型方法,使用尖括号放在返回值前表示该函数为泛型方法,其任意类型用尖括号内字母 E 表示,E可以替换为其他自己习惯的字母,后续可以在参数列表和返回值、方法体中使用。public static void main(String[] args) { Test08 test08 = new Test08(); test08.hi(1); test08.hi("hi");}public <E> vo原创 2021-06-12 17:03:57 · 178 阅读 · 0 评论 -
java笔记(5)Iterator、ListIterator、Object
迭代器是接口,被其他集合实现用来遍历。 ArrayList<Integer> sites = new ArrayList<>(); sites.add(10); sites.add(23); sites.add(34); Iterator<Integer> iterator = sites.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }.原创 2021-06-10 17:35:37 · 125 阅读 · 0 评论 -
java集合框架笔记(4)HashSet、HashMap
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 实现了 Set 接口。HashSet 无法通过下标获取元素,只能使用 contains() 判断元素是否存在于集合。HashMap 可以直接被打印。使用put(原创 2021-06-09 14:26:24 · 166 阅读 · 4 评论 -
java集合框架笔记(3)LinkedList
以下情况使用 ArrayList :频繁访问列表中的某一个元素。只需要在列表末尾进行添加和删除元素操作。以下情况使用 LinkedList :你需要通过循环迭代来访问列表中的某些元素。需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。LinkedList 继承了 AbstractSequentialList 类。LinkedList 实现了 Queue 接口,可作为队列使用。LinkedList 实现了 List 接口,可进行列表的相关操作。LinkedList 实现了 D原创 2021-06-08 14:00:16 · 97 阅读 · 0 评论 -
java集合框架笔记(2)ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。利用get()、add()、set()、remove()实现 增删改查操作,配合size()获取数组大小辅助遍历。java中有两种数据类型:基本类型和引用类型。泛型一般使用的是引用类型。基本类型有8个:整数类型 byte、short、int、long浮点数类型 float、double字符型 char布尔类型 boolean引用类型包括三种:类 Class接口 Interf原创 2021-06-07 16:18:20 · 115 阅读 · 2 评论 -
java集合框架笔记(1)
Set和List的区别Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。多线程不用Array原创 2021-06-06 17:13:15 · 60 阅读 · 1 评论 -
二叉树算法题
144 二叉树的前序遍历递归 时间快,占用空间多/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode原创 2021-05-23 14:09:49 · 134 阅读 · 0 评论 -
链表13题
83 删除排序链表中重复元素/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next原创 2021-05-19 15:01:09 · 152 阅读 · 0 评论 -
java学习笔记-二叉树的遍历
二叉树的遍历前中后序遍历,层序遍历,广度优先,深度优先……递归方式、迭代方式实现……前序遍历-迭代实现利用栈先进后出的特点,对每一个结点进行根左右顺序的访问。栈对每个结点的操作是,将要操作的结点压栈,然后弹出时检查该结点是否有左右子结点,按照先右后左的顺序将子结点压栈,这样弹出的顺序就是根左右,右子结点在左子结点在前入栈。PreOrder.javaimport java.util.Stack;/** * @Description: 根左右顺序遍历二叉树 * @author: Hardy原创 2021-05-07 10:38:36 · 83 阅读 · 0 评论 -
Java学习笔记-LinkedList 二叉树队列
将二叉树结点放进队列方便层序遍历等操作TreeNode.java/** * @Description: This is BinaryTreeNode * @author: HardyDragon * @date: 2021/4/23 10:52 */public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val)原创 2021-04-23 11:56:59 · 304 阅读 · 0 评论 -
Java 递归实现经典欧几里得算法 找到两个非负整数的最大公约数
Java 递归实现经典欧几里得算法 找到两个非负整数的最大公约数早在2300年前,就出现了算法。欧几里得算法目的是找到两个数的最大公约数。思路:计算两个非负整数 p 和 q 的最大公约数:如果 q 是 0,那么最大公约数就是另一个数 p。如果不是,那么 p 和 q 的最大公约数就是 q 和 p % q ( p 对 q 取余数)的最大公约数。public int gcpp(int p, int q) { if (q == 0) return p; int r = p % q;原创 2021-04-18 11:57:53 · 216 阅读 · 0 评论 -
IDEA 修改配置文件,加大内存使用,提高启动速度
IDEA 修改配置文件,加大内存使用,提高启动速度1. 打开IDEA bin路径 找到 idea64.exe.vmoptions 文件2. 修改内存值,最小启动,最大占用,代码缓存tips: JetBrains 公司的其他 IDE 也可通用,例如 pycharm 。...原创 2021-04-18 11:42:39 · 257 阅读 · 0 评论