[java se/jdk] map之重定义key对象的hash值-编程思维
0 序言 项目上有个场景:数据源连接池需要对key对象的hash值重写,保证通过相同的关键属性(datasourceName)值去重不同的对象。 public abstract class AbstractDatabaseConnectorKeyedObjectPool<K extends DataSource, V extends AbstractConnector> 1
morethink program
0 序言 项目上有个场景:数据源连接池需要对key对象的hash值重写,保证通过相同的关键属性(datasourceName)值去重不同的对象。 public abstract class AbstractDatabaseConnectorKeyedObjectPool<K extends DataSource, V extends AbstractConnector> 1
1 序言 执行命令行,是实现自动化程序、跨环境调用的重要途径 2 源码示例 package test.java; import org.junit.Test; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; i
1 题目描述 from 网友 CASE1 输入 A1 A8 输出 [A1,A2,A3,A4,A5,A6,A7,A8] CASE2 输入 A1 K1 输出 [A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1] 2 算法源码 import java.util.Scanner; public class Main { public
1 变量 1.1 变量的【定义】 1.2 变量的【作用域】 1.3 变量的【初始值】 1.4 补充:缓存变量 1.5 变量的【分类】与【未初始化情况】 2 类对象 2.1 类对象的初始化/构造过程 1 【对象】的初始化流程 2 实验 class Base{ static { System.out
1 题目 题目来源: https://leetcode-cn.com/problems/two-sum/ 2 思路与代码 2.1 思路一:暴力法(两层For循环) 思路一:暴力法(两层For循环) 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间。因此时间复杂度为 O(n^2)。 空间复杂度:O
这一问题,已苦恼多日,上述答案系近整整2日广泛阅读书籍、博客、网络问答后,归纳并苦思而成。 本博文仅罗列总的观点,各观点的具体解释,可私信Word笔记。 如需转载or复制时,请注明出处。 本博文同步发表于知乎:在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常? 一 通用规范 - 1 0 延迟【捕获】,尽早【抛出】,【量力】而行。 1 ☆尽量避免且不捕获本可避免的【Uncheck
1 快速排序 1.1 算法思想 快速排序是由冒泡排序改进而得的。 在冒泡排序过程中,只对相邻的2个记录进行比较;因此,每次交换2个相邻记录时,只能消除1个逆序。 若能通过2个(不相邻)记录的1次交换,消除多个逆序,则:会大大加快排序的速度。 而快速排序方法中的1次交换,则:可能消除多个逆序。 1.2 算法特征 属于【交换排序】的1种 冒泡排序 快速排序 每次交换2个(不相邻)记录时,可消除
1 选择排序 1.1 算法思想 每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列的最后(or最前面),直到全部排完位置。 1.2 算法特征 属于【选择排序】 简单选择排序 堆排序 适用于【稳定性】:不稳定(亦可稳定,与“交换记录”的策略相关) 适用于【存储结构】:顺序存储结构 or 链式存储结构 (二者均可) 【时间复杂度】:O(n*n) (最好/平均/最坏) 【空
1 冒泡排序 1.1 算法思想 交换排序的基本思想:两两比较待排序记录的关键字,一旦发现2个记录不满足次序要求时,则:进行交换,直到整个序列全部满足要求为止。 1.2 算法特征 属于【交换排序】 冒泡排序 快速排序 适用于【稳定性】:稳定 适用于【规模N】:较小 适用于【有序性】:有序 适用于【存储结构】:顺序存储 or 链式存储(二者均可) 相关口诀:【插冒归堆】好有序,
1 直接插入排序 1.1 算法思想 插入排序的基本思想是:每一趟将1个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。 1.2 算法特征 属于【插入排序】 直接插入排序 折半插入排序 希尔排序 适用于【稳定性】:稳定 适用于【规模N】:较小 适用于【有序性】:有序 适用于【存储结构】:顺序存储or链式存储(二者均可)
1 折半插入排序 1.1 算法思想 相比于【直接插入排序】:采用“顺序查找法”查找当前记录在已排好序的序列中的插入位置, 折半插入排序利用“折半查找法”快速查出目标插入位置,再针对性滴移动元素,实现插入。 1.2 算法特征 属于【插入排序】 直接插入排序 折半插入排序 希尔排序 适用于【稳定性】:稳定 适用于【规模N】:较大 适用于【有序性】:无序 适用于【存储结构】:仅顺序存储结构(链
定义 静态成员:又称类成员,使用static修饰符的方法和变量; 非静态成员:又称实例成员,未使用static修饰符的方法和变量。 结论 注:jdk1.8 测试源码 public class Main { private int x = 34; // 非静态变量 private static int a = 1; //
[文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式: DOM(Document Object Model): 特点:树状解析 优点:【更适合对XML文档的(crud)操作。】对XML文档增删改查操作很方便灵活
[文档整理系列] Java SE之XML<一>XML文档规约 1.xml文档引用: 1.外部私有DTD: <!DOCTYPE rootNodeName SYSTEM "uri.dtd"> (在xml文件中声明,带关键字SYSTEM) 2.外部公共文件时: <!DOCTYPE rootNode名称 PUBL
[文档整理系列] Java SE之调整JVM内存笔记 一般JVM内存限制是64Mbyte Eclipse下 Run as configrationArguments选项:-Xmx80m 【设置虚拟机JVM最大开辟内存为80Mbyte】 ===================================================一. 设置JVM内存的参数有四个: -Xmx Ja
正则表达式 概念 定义:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号表示代码的操作,这样就简化了长篇的程序代码 好处:可以简化对字符串的复杂操作 弊端:符号定义越多,正则越长,阅读性越差 关键类 String Pattern:正则类对象 Matcher:通过解释Pattern对character sequence执行匹配操作的引擎类。(匹配器
package demo.regex; import java.util.regex.Pattern; /* 正则表达式:匹配 */ public class RegexMatchesDemo { //匹配手机号码 //13XXXXX;15XXXXXX;18XXXXXX public static void checkPhone(String string) { System.
/** * * @author Zen Johnny * @date 2018年4月29日 下午4:31:07 * */ package demo.regex; public class RegexReplaceDemo { public static void replaceDemo(String string, String regex,String replacement
/** * * @author Zen Johnny * @date 2018年4月29日 下午4:51:08 * */ package demo.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexGetDemo { public static vo