JAVA
文章平均质量分 51
没有人比我更懂暴力算法
计算机专业博士僧,JAVA语言忠实粉丝,研究方向:数据挖掘&算法。
展开
-
Java迭代器 & for循环的区别
1、iterator接口实现了三个方法;2、比较for循环和iterator迭代的效率;3、遍历ArrayList 比 遍历LinkList 更快原创 2022-11-27 22:18:52 · 4660 阅读 · 1 评论 -
JAVA技能树-打卡
JAVA技能树-打卡笔记原创 2022-09-12 21:51:05 · 332 阅读 · 0 评论 -
Comparable比较的重写方法
对于Map中的数据,按照ULStrcture中的util + rutil 进行排序。重写compareTo方法2 自定义数据类型版重写一下compareTo() 方法由于传入的参数不同,所以也会调用不同的compareTo()方法。定义一个数据类型,可以有不同的实现 (为了配合方法的调用)...原创 2022-06-07 12:37:19 · 335 阅读 · 0 评论 -
JAVA 输入流 or 输出流 && 程序性能分析
1、Java Visual VMJAVA 性能分析工具https://www.cnblogs.com/linghu-java/p/5689227.html去idea 、jdk 的bin目录下面找 .exe (具体说明看链接)2、先关闭输出流 or 输入流?1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。2原创 2022-04-01 23:16:14 · 576 阅读 · 0 评论 -
addAll() 和 clone 的总结
1、addAll() 和 = 赋值的区别“=”是对象地址的传递并复制java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的。java中有几种基本类型如int,float,double,char,byte等,他们不是对象,除此之外一切都是对象,所有的对象都是在堆上分配的。因此当创建对象或者对已经创建的对象赋值时(注意是对象,不是基本类型):Object a=new Object 和Object a=b(b是Object原创 2022-03-21 18:34:36 · 1639 阅读 · 0 评论 -
Queue和Stack的初始化
Queuequeue.isEmpty() :判断队列是否为空。为空返回true,不为空返回false。queue.peek(): 判断队头元素是否为空。为空返回null,不为空返回栈顶元素。queue.size():为空返回0,不为空返回一个大于1的整数。[ 判断是否为空一般用 Q != null + Q.isEmpty() ]如果保证了已经 Q = new Queue; 则直接 Q.isEmpty() //Queue<Integer> queue1 (类变量)原创 2022-03-19 10:10:30 · 1249 阅读 · 0 评论 -
并发修改异常 && 迭代器
一、并发修改异常对集合进行遍历时,对集合进行增、删操作,会引起并发修改异常。方案一:使用迭代器foreach底层也是使用Iterator迭代器进行迭代的 public static void main(String[] args) { ArrayList<Integer> arrayLists = new ArrayList<>(); arrayLists.add(new Integer(1)); arrayLists原创 2022-03-16 20:59:06 · 841 阅读 · 0 评论 -
longValue() && Long.valueOf()
longValue()longValue()是Long类的一个方法,用来得到Long类中的数值;也就是将包装类中的数据拆箱成基本数据类型。Long.valueOf(参数)Long.valueOf(参数)是将参数转换成long的包装类——Long;也就是把基本数据类型转换成包装类。为什么使用Long时,推荐多使用valueOf方法,少使用parseLong方法?因为Long本身有缓存机制,缓存了-128到127范围内的Long,valueOf方法会从缓存中去拿值,如果命中缓存,会减少资源的开销,pa原创 2022-03-10 17:18:21 · 9367 阅读 · 0 评论 -
Integer.MAX_VALUE
1 Java中Long和long的区别https://blog.csdn.net/qq_36833171/article/details/937342492 比较大小 long a = 2147483647; int b = Integer.MAX_VALUE; System.out.println(b); //2147483647 System.out.println(a<=b); //true a++;原创 2022-02-24 22:39:21 · 310 阅读 · 0 评论 -
深复制和浅复制 && 数组深复制的方法
1 深复制和浅复制的方法浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。浅复制下次再取的时候,可能内容已经发生了变化深复制:在计算机中开辟一块 新的内存地址 用于存放复制的对象。clone是深复制方法例子:item_table.put(can_item, temp_tab);普通的复制,是浅复制,仅复制地址;若后面对can_item进行修改,对应也会修改。比如到了下一个can_item,new 一个新的can_item,就会导致item_t原创 2021-07-12 20:45:32 · 1051 阅读 · 1 评论 -
判断两个list 或两个数组的内容是否是相同
HashMap 是内部类,不方便重写hashode() 和 equals()方法。所以,如何判断两个list中的内容是否相同呢?原创 2021-07-11 20:49:41 · 11096 阅读 · 1 评论 -
数组 & 链表 & 哈希表
数组操作数据(增加): 是将原数组的数据复制一份,再加上增加的对应位置的数据,形成一个新的数组。所以较慢。查找数据:数组是有下标的,根据下标进行查找。链表一个链表的数据单元,结构是存储着一个数据,以及下一个链表单元数据的地址。如下所示。操作数据(增加):如 a-b。在ab之间增加一个c,增加c这个单元,并修改c的“下一个链表单元的地址”为b的地址,并将a的“下一个链表单元的地址”修改为c的地址即可。查找(取出)数据,根据上一个数据,才能找到下一个数据。慢哈希表: (数组+链表)是数原创 2021-07-09 22:31:20 · 161 阅读 · 3 评论 -
JAVA 取出map的值进行修改后,不改变原来的map值
TreeMap<Integer, Integer> m1 = new TreeMap<>(); m1.put(4,0); m1.put(5,0); m1.put(6,0); m1.put(1,0); m1.put(2,0); m1.put(3,0); System.out.println(m1); TreeMap<Integer, Integer> m2 = m1; m2.remove(1); .原创 2021-06-29 22:11:21 · 3059 阅读 · 1 评论 -
Java heap space 修改内存堆栈的大小
当数据记录过大时,就会出现内存溢出的情况。java.lang.OutOfMemoryError: Java heap space如何修改内存堆的大小?setp1: Run – edit configurationsstep2: add VM options – 填入修改内存的大小一般默认是内存的1/4,若达到物理内存的80%左右,就会出现Java heap space。这时候,就扩大内存。填入以下字段-Xmx5000m表示修改的内存为 5000m比如计算机内存为16G,就是最大原创 2021-06-23 10:28:14 · 689 阅读 · 2 评论 -
JAVA 文件流输出
1 使用BufferedWriterOutputStreamWriter outPut = new OutputStreamWriter(new FileOutputStream(File,true)); FileOutputStream() 如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。(避免被覆盖)2 使用OutputStreamWriterOutputStreamWriter outPut = new OutputStreamWriter(new FileOutp原创 2021-06-20 22:24:04 · 1893 阅读 · 0 评论 -
重写 hashCode() 和 equals(Object obj) 方法
一般来说,判断两个项集是否相等,比较的是地址。如果要比较内容,需要重写 hashCode() 和 equals() 方法版本1fitem 和 sitem 的属性为 int 类型,是一个数,equals()方法就能直接用等号(==)判断。public class ItemPair { public int fitem; public int sitem; @Override /** @Description: 为输入值序列生成哈希码。 * 哈希代码生成时,就好像所有输入值都被放入原创 2021-06-17 10:35:28 · 122 阅读 · 0 评论 -
JAVA集合遍历增删 并发修改异常 java.util.ConcurrentModificationException
集合遍历增删 并发修改异常想要在循环遍历的过程中删除集合中的元素,问题描述如下// 遍历map集合(UO_table),对于不满足条件1 "支持度"的项集,直接从UO_table中删除for(ItemPair itempair : UO_table.keySet()) { if(uo_list.size() < Info.min_sup){ UO_table.remove(itempair); }}以上代码会出现并发修改异常修改1:用一个集合存储需要删除的记录,再remove()原创 2021-06-16 15:31:09 · 435 阅读 · 0 评论 -
Arraylist 的add()中的对象
Arraylist 的add()中的对象,是一个地址,修改其中的对象,也会修改对应的值原创 2021-05-29 23:21:27 · 253 阅读 · 0 评论 -
修改 list 中的值
方案一: 用set()方法,找到对应的下标//方案一: 用set()方法,找到对应的下标 Stu tempStu = new Stu("djska", 0); list.set(2, tempStu);方案二: 用get()取出对应元素后,再修改Stu stu=list.get(2); stu.id = 7; stu.nameString = "66666";完整的测试代码public class exe1 { public static void main(String[]原创 2021-05-26 11:29:10 · 10923 阅读 · 0 评论 -
关于Map的存储顺序 && HashMap TreeMap linkedHashMap 输入输出样例
一、HashMapInput 1:Output 1:相当于一个桶的容器,输入的【5 4 3 2 1 17】分别对16取模,放入相应的位置。【1 2 3 4 5】。当遇到【17】时, 17 mod 16 = 1,【1】位置上已经有【1】,【17】相当于一个 list 被挂在【1】位置后。二、TreeMap 按key有序若用 TreeMap ,输出是按key有序的甚至treemap可以实现自定义排序按照key倒序,结果如下:三、linkedHashMap 按插入顺序得到数据link原创 2021-04-29 09:21:55 · 1218 阅读 · 0 评论 -
TreeMap 按value 值排序 --- 把TreeMap的EntrySet转换成list
TreeMap底层根据红黑树的数据结构构建,默认根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。要根据value值对TreeMap进行排序,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序一、Map的 Entry 对象1、Entry: 键值对 对象。在Map类设计是,提供了一个嵌套接口(st原创 2021-04-26 09:43:40 · 1239 阅读 · 0 评论 -
Math中常用的函数和基本类型常量值
一、Math中常用的函数 /** * 基本函数 */ *Math.sqrt()//计算平方根 *Math.cbrt()//计算立方根 *Math.pow(a, b)//计算a的b次方 *Math.max( , );//计算最大值 *Math.min( , );//计算最小值 System.out.println(Math.sqrt(16)); //4.0 System.out.printl转载 2020-08-11 21:07:51 · 254 阅读 · 0 评论 -
this关键字的三种用法和举例
一、java中this关键字的三个用法(1) this调用本类中的属性,也就是类中的成员变量;(2) this调用本类中的其他方法;(3) this调用本类中的其他构造方法,调用时要放在构造方法的首行。1、this.属性名当局部变量与全局变量同名时,总是指向局部的变量(就近原则)。若要指向全局变量,就用 this.属性名 指向成员变量。若不同名无冲突,则可以省略this。public class Teacher { private String name; priv转载 2021-04-21 23:20:31 · 5464 阅读 · 2 评论 -
局部变量 & 成员变量 & 类变量 & 实例变量
一、局部变量 & 成员变量区别:成员变量在类中,局部变量在方法中声明成员变量时可以不初始化,系统自动初始化(被final修饰且没有static的必须显式赋值),而局部变量必须手动初始化成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型成员变量存储在堆,局部变量存储在栈存在时间不同二、类变量 & 实例变量 & 成员变量类变量是类中独立于方法之外的变量,用原创 2021-04-21 23:00:11 · 201 阅读 · 0 评论 -
关于数组----填充Arrays.fill()和数组最大长度的问题
通过 Java Util 类的 Arrays.fill(arrayname,value) 方法和Arrays.fill(arrayname ,starting index ,ending index ,value) 方法向数组中填充元素public class FillTest { public static void main(String args[]) { int array[] = new int[6]; Arrays.fill(array, 100);原创 2020-10-26 10:56:55 · 1137 阅读 · 0 评论 -
数据结构 HashMap 与 TreeMap
1、HashMap无顺序,而TreeMap的输出自然有序。Map<String, String> books1 = new HashMap<>(); books1.put("bob", "books"); books1.put("c", "concurrent"); books1.put("a", "a lock"); Map<String, String> books2 = new TreeMap<&.原创 2020-09-26 22:23:46 · 207 阅读 · 0 评论 -
BufferedWriter 和 BufferedReader 的用法
BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以很效率比没有缓冲区的很高。一、BufferedWriter 类构造方法:bufferedWriter bf = new bufferedWriter(Writer out );主要方法:void write(char ch);//写入单个字符。void write(char []cbuf,int off,int len)//写入字符数据的某一部分。void write(String转载 2020-09-21 17:04:11 · 686 阅读 · 0 评论 -
java 中的printStackTrace()方法
try{… } catch(Exception e) {e.printStackTrace() ; }当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象异常名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace();。printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。.转载 2020-09-15 22:10:54 · 12355 阅读 · 0 评论