
Java基础
文章平均质量分 64
Java基础
冷雨夜中漫步
这个作者很懒,什么都没留下…
展开
-
Java如何优雅地实现数组集合的相互转换
【问题】将转为一维int型数组【方法】使用 + String一维数组转int二维数组(String[] to int[][])【问题】将转为二维int型数组【方法】使用List转Map【问题】将一个List对象转为Map,其中List是类似如下结构:【方法】 +...原创 2022-07-17 22:11:01 · 749 阅读 · 0 评论 -
Java如何优雅地实现字符串枚举转换
字符串转枚举类型 return EnumSet.allof(Status.class).stream() .filter(s -> s.toString.equals(status)) .findAny() .orElseThrow(() -> new IllegalArgumentException("Invalid status: " + status));原创 2022-02-16 23:11:21 · 3608 阅读 · 1 评论 -
Java如何优雅地合并多个List
有时候我们会遇到:如何将的所有值合并为一个对象,这时候就可以使用。示例如下:输出为:Stream.flatMap()方法官网解释:上述解释可能比较难理解,这里更通俗的解释是,flatMap对流中的元素使用映射函数后再平铺一个流进行返回。所以可以理解上述用例代码,返回的是一个所有元素都为的流,再使用,将每个中的所有元素变为一个流,这样原本由3个List,每个List5个元素的流, 变成了15个String元素的流,然后再合并可以转为一个List。...原创 2022-07-06 23:21:09 · 3503 阅读 · 0 评论 -
排序算法专题——数组链表排序
排序算法专题数组排序快速排序每次partition之后,partition的节点位置已经定好,需要对[start, partition-1] 和[partition + 1, end]再排序如果start >= end后跳出循环,说明排序结束class Demo{ private int randomIndex(int start, int end) { int index = new Random().nextInt(end - start + 1);原创 2022-04-10 23:37:05 · 406 阅读 · 0 评论 -
java中的内部类与使用场景
java中的内部类java中的内部类成员内部类静态内部类局部内部类匿名内部类java中的内部类java内部类分为:成员内部类、静态内部类、局部内部类、匿名内部类。使用场景:成员内部类:不想被其他类公开使用的类,因为外部类只能定义为public或者缺省。静态内部类:一个类与另一个类关联性比较强,但是又可以不依赖外部类而独立存在。比如HashMap与Node局部内部类:局部内部类访问方法中定义的final类型的局部变量,局部类完全对外部隐藏,比较少用匿名内部类:适用于快速构造对象,lambda表原创 2022-04-01 22:48:51 · 5893 阅读 · 1 评论 -
Java并发与多线程(3)——Java中的锁
二、Java线程三、Java中的锁3.1 JVM中的对象内存布局3.1.1 MarkWord3.1.2 指向类的指针:3.1.3 数组长度:3.2 Java中共享数据3.2.1 不可变3.2.2 绝对线程安全3.2.3 相对线程安全3.2.4 线程兼容3.2.4 线程对立3.3 线程安全的实现3.3.1 互斥同步(阻塞同步)3.3.1.1 synchronized关键字3.3.1.2 ReentrantLock3.3.1.3 synchronized与ReentrantLock对比**3.3.2 非阻塞同步原创 2022-02-16 00:27:19 · 1593 阅读 · 0 评论 -
Java JVM虚拟机选项Xms/Xmx/PermSize/MaxPermSize(转)
通过JVM的这些选项:Xms/Xmx/PermSize/MaxPermSize可以牵扯出很多问题,比如性能调优等。说明:以下转载没经过实践。Java JVM虚拟机选项Xms/Xmx/PermSize/MaxPermSize(转)经验实例(参考):设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~50原创 2022-01-26 23:08:18 · 6963 阅读 · 1 评论 -
Java并发与多线程(2)——Java线程
二、Java线程二、Java线程2.1 实现线程的三种方式2.1.1 继承Thread类2.1.2 实现Runnable接口2.1.3 实现Callable接口,允许有返回值的线程2.1.4 Runnable与Callable的区别2.2 线程的生命周期2.2.1 新建(New)2.2.2 就绪(Runnable)2.2.3 运行(Running)2.2.4 阻塞(Blocked)2.2.5 死亡(Dead)2.3 结束线程的方法2.4 线程中异常处理2.5 Thread中的方法2.4.1 start()原创 2022-01-16 21:19:58 · 1547 阅读 · 0 评论 -
Java并发与多线程(1)——指令重排与JMM
一、指令重排与JMM一、指令重排与JMM1.1 数据依赖性1.2 as-if-serial语义1.3 重排序概念1.4 重排序对多线程的影响1.5 Java内存模型(JMM)1.5.1 JMM抽象模型结构1.5.2 Happens-Before规则1.5.3 JMM如何解决重排序问题1.5.4 volidate关键字如果觉得有用可以关注一下公众号:求赞求关注一、指令重排一、指令重排与JMM1.1 数据依赖性1.2 as-if-serial语义1.3 重排序概念1.4 重排序对多线程的影响1.5 Jav原创 2022-01-03 22:58:58 · 724 阅读 · 0 评论