Java基础
发哥随手记
随缘作家,随缘分享
展开
-
Map的遍历方式和排序
Java中Map的遍历主要有三种方式:keySet 循环遍历、 entrySet() 循环遍历(尤其是容量大的时候)、values 循环遍历但是只能访问到values;代码如下:package map.traverse;import org.junit.jupiter.api.Test;import java.util.HashMap;import java.util.Itera原创 2017-03-30 13:00:17 · 1166 阅读 · 1 评论 -
使用java8的lambda将list转为map(转载)
常用方式代码如下:public Map<Long, String> getIdNameMap(List accounts) {return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));}收集成实体本身map代码如下:public Map<Long...转载 2018-10-26 09:39:29 · 357 阅读 · 0 评论 -
Java 8十个lambda表达式案例
实现Runnable线程案例使用() -> {} 替代匿名类://Before Java 8:new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8 "); }}).start();//Java 8 way:n...转载 2018-11-06 16:20:12 · 193 阅读 · 0 评论 -
详解JVM中堆、栈、方法区(对象、值)是如何调用执行的
JAVA的JVM的内存主要分为3个区:堆(heap)、栈(stack)和方法区(method)堆区1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身栈区1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),...转载 2019-04-03 16:29:48 · 632 阅读 · 0 评论 -
ThreadPoolExecutor
ThreadPoolExecutor 源码解析前提基础想要看明白线程池的源码,先要知道线程几个关键字段的作用及含义,代码如下: // 表示线程池的状态和数量 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS = Int...原创 2019-05-14 10:01:25 · 179 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier和Semaphore几个并发容器的使用
CountDownLatch、CyclicBarrier和Semaphore几个并发容器的使用在讲这几个容器之前,本人讲述一个小面试题,该题的描述:让A、B、C三个线程同时执行,并且依次输出A、B、C三个字母十次。面试时,想法方向是对的,但是结果是错的。我想到的是两种实现,分别是:wait、notifyAll配合使用和并发容器的使用。CountDownLatch该容器主要的作用是:多个线程之...原创 2019-05-14 21:37:28 · 393 阅读 · 0 评论