java
java相关代码心得
andQVQ
这个作者很懒,什么都没留下…
展开
-
Java 运行时识别类型信息
当Java创建某个类的对象,比如Writer类对象时,Java会检查内存中是否有相应的Class对象。如果内存中没有相应的Class对象,那么Java会在.class文件中寻找Writer类的定义,并加载Writer类的Class对象。一旦Class对象加载成功,就可以用它来创建这种类型的所有对象。这也就是说,每个对象在运行时都会有对应的Class对象,这个Class对象包含了这个对象的类型信息。因此,我们能够通过Class对象知道某个对象“真正”的类型,并不会因为向上转型而丢失。参考...原创 2022-06-08 19:54:48 · 273 阅读 · 1 评论 -
List遍历时删除与迭代器(Iterator)解惑
文章目录ArrayList 遍历时删除方法for循环向后遍历的陷阱增强型for循环(foreach)遇到的问题使用迭代器进行遍历同时修改操作iterator调用remove()方法为什么要先调用next()方法?快速失败(fail-fast)安全失败(fail-safe)List集合使我们非常熟悉的,ArrayList等集合为我们提供了remove()方法,但在遍历时却不能随便使用,我们我们今天便从实现层面讨论下原因以及Iterator的相关知识。ArrayList 遍历时删除方法for循环向后遍历的原创 2022-05-11 16:03:13 · 2656 阅读 · 0 评论 -
groupBy的时候实现组间排序
方法1:使用treeMap,默认按照升序排序TreeMap<String, List<Matchs>> matchsListMap = matchsList.stream().collect(Collectors.groupingBy(Matchs::getMatchDate,TreeMap::new,Collectors.toList()));方法2:传入有顺序的Map, LinkedHashMap 即可。参考...原创 2022-04-12 15:51:14 · 992 阅读 · 0 评论 -
记一次导入包无效问题
原因:先增加一个模块,删除后又加入同名模块,此时idea会默认删除的模块不再用,所以hi将删除模块的pom文件忽略掉,此时依赖是引不进来的。解决办法:1、删除新建的有问题的模块2、打开项目中.idea/misc.xml,将下图中的行删除,对应刚删除的模块名3、右键pom.xml -> maven ->Reimport,重新导入依赖,问题解决参考...原创 2022-03-17 14:34:16 · 266 阅读 · 0 评论 -
future异步调用方法
ListenableFutureTask<T> task = ListenableFutureTask.create(new Callable<T>() { @Override public T call() throws Exception{ List<ListenableFuture<T>> = new ArrayList<>(); futures.add(function); T result = new T; resul原创 2022-03-04 15:33:59 · 895 阅读 · 0 评论 -
Semaphore
信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。常用方法说明acquire() 获取一个令牌,在获取到令牌、或者被其他线程调用中断之前线程一直处于阻塞状态。acquire(int permits) 获取一个令牌,在获取到令牌、或者被其他线程调用中断、或超时之前线程一直处于阻塞状态。acquireUninterruptibly() 获取一个令牌,在获取到令牌之前线程一直处于阻塞状态(忽略中断)。 tryAcquire()尝试获得令牌,原创 2022-03-04 11:05:44 · 83 阅读 · 0 评论 -
if 和 switch 效率
if…else写法:if(boolean){ } else if(boolean){ } else if(boolean){ } else{ }switch…case写法:switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; }总结:switch以空间换时间。1、当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后原创 2022-02-28 17:47:23 · 7809 阅读 · 0 评论 -
泛型通配符
通常情况下,使用T,E,K,V,?。提高代码可读性,约定的意义是:?表示不确定的 java 类型T (type) 表示具体的一个java类型K V (key value) 分别代表java键值中的Key ValueE (element) 代表Element其中?又可以分为上界通配符 < ? extends E>:用 extends 关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。类型参数列表中如果有多个类型参数上限,用逗号分开。下界通配符 < ? s原创 2022-01-04 14:52:31 · 259 阅读 · 0 评论 -
java中String类所有用法
文章目录new和直接赋值的区别+拼接字段用法lastIndexOf(int ch)format连接可变字符串concat(String str)intern()replace(char oldChar, char newChar)replace(CharSequence target, CharSequence replacement)replaceAll(String regex, String replacement)replaceFirst(String regex, String replaceme原创 2022-01-05 16:51:18 · 1074 阅读 · 0 评论