![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
good good study
这个作者很懒,什么都没留下…
展开
-
HashMap put函数执行流程
HashMapput函数执行思路public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }//如果key为null,则hash为0,否则key的hashCode值高位与低16位异或,使hash更加分散。static final int hash(Object key) { int h; return (key == null) ? 0原创 2020-09-19 22:10:30 · 704 阅读 · 0 评论 -
循环遍历删除元素的问题-ConcurrentModificationException
在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出bug。下面就是可能出现的一种删除方式。 ArrayList<Integer> list = new ArrayList<>(); list.add(3); list.add(4); System.out.println(list); Iterator<Integer> iterator = list.iterat原创 2020-08-13 15:24:04 · 219 阅读 · 0 评论 -
痛苦的配置maven idea过程
1、按照教程下载maven错了好多次,下载了不止这么多版本,最后使用3.5.2了2、配置了localRepository3、配置了镜像mirror镜像到处找,最后用的这个<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/p原创 2020-07-19 09:50:42 · 101 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-in...原创 2020-05-22 12:57:28 · 222 阅读 · 0 评论 -
并查集,朋友圈问题
问题来源:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。输入:[[1,1,0],[1,1,0],[0,0,1]]输出: 2说明:已知学生0和学生1互为朋友原创 2020-05-14 12:54:13 · 236 阅读 · 0 评论 -
设计模式-单例模式
单例模式优点:由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。单例模式可以在系统设置全局的访问点,优化环共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。常见的五种单例模式实现方式:饿汉式(线程安全,调用效率高,不能延时加载)//饿汉式单例模式public class SingletonDemo1 { private .原创 2020-05-12 17:02:02 · 100 阅读 · 0 评论 -
类加载流程,类加载机制及自定义类加载器详解
类加载流程,类加载机制及自定义类加载器详解一、引言当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。二、类的加载、链接、初始化1、加载类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象。类的加载过程是由类加载器来完成,类加载器由JVM提供。我们开发人员也可以通过继承ClassLoader来实现自己的类加载器。1.1、加载的class来源从本地文件系统内加载class文件 从JAR包加转载 2020-05-12 10:26:00 · 183 阅读 · 0 评论 -
Java 类加载初始化过程
类的静态变量和静态初始化块是按照从上到下的顺序执行的。public class Demo { static { System.out.println("静态初始化类Demo"); } public static void main(String[] args) { System.out.println("开始执行main方法"); A a = new A(); System.out.println(A.w); .原创 2020-05-11 11:46:50 · 137 阅读 · 0 评论 -
文件的读写 java
字节流字节输出流[OutputStream]其中的一个基本实现类FileOutputStream构造方法public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件。当你创建一个流对象时,必须传入一个文件路径。...原创 2020-04-14 18:12:12 · 140 阅读 · 0 评论 -
Thread使用start和run方法的区别
相信Thread对我们来说并不陌生,学java的时候都是入门的东西,我们一般使用thread都是new一个线程,然后调用start方法启动,使用start方法才真正实现了多线程运行,因为这个时候不用等待我们的run方法执行完成就可以继续执行下面的代码,这才叫多线程嘛!因为thread线程有5种状态,创建-就绪-运行-阻塞-死亡这五种,那么我们的start方法呢就是就绪这一步,因为这个时候我们的线程...原创 2020-04-02 21:03:32 · 328 阅读 · 0 评论 -
线程的状态
线程的状态转换任务在线程中执行,线程可以是以下五种状态之一:新建、就绪、运行、阻塞、结束。 阻塞startrunrun完成yield或超时joinsleepwait结束目标超时发信号等待目标结束等待超时等待通知创建的线程新建就绪运行结束新建一个线程时,它就进入新建状态(New)。调用线程的start()方法启动线程后,它就进入就绪状态(Ready)。就绪状态是可运行的,但可能还没有开始运行...原创 2020-04-01 11:40:49 · 137 阅读 · 0 评论 -
Scanner中的next和nextLine
思路我相信对很多读者朋友来说,编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个 1。不要气馁,因为二分查找其实并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward,the detail...原创 2020-03-20 15:43:44 · 336 阅读 · 0 评论 -
Comparable和Comparator
Comparable<T>public interface Comparable<T>此接口对实现该接口的每个类的对象强加了总体排序。该排序称为类的自然排序,而该类的compareTo方法被称为其自然比较方法。可以通过Collections.sort(和 Arrays.sort)自动对实现此接口的对象的列表(和数组)进行排序。当且仅当 e1.compareTo(...原创 2020-03-18 08:47:16 · 111 阅读 · 0 评论