直接上实战
//以前写法
public String getCity(User user) throws Exception{if(user!=null){if(user.getAddress()!=null){Address address = user.getAddress();if(address.getCity()!=null){return address.getCity();}}}throw new Excpetion("取值错误"); }//java8写法 public String getCity(User user) throws Exception{return Optional.ofNullable(user).map(u-> u.getAddress()).map(a->a.getCity()).orElseThrow(()->n...
http://www.importnew.com/20386.html Java8系列之重新认识HashMap原文出处: 前利简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示:下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 Hash...
public void dealGovernanceStrategyNew(List<StrategyStreamOperation> commonAll, StrategyDetail strategyDetail, List<String> instanceList) {if (Objects.isNull(strategyDetail.getType()) && Objects.isNull(strategyDetail.getRetainNum())) {// 500一组分批处理List<List<String>> lists = ListSplitUtil.splitList(instanceList, 500);// 对于集合写操作:synchronizedList 相对于Vector 、CopyOnWriteArrayList性能更佳...
前言本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/javase/8/docs/api/ Package java.util.stream Description 一些用于支持流上函数式操作的类 ,例如在集合上的map-reduce转换。例如 int sum = widgets.stream()
.filter(b -> b.getColor() == RED)
.mapToInt(b -> b.getWeight())
.sum();此处,我们使用widgets, 他是一个 Col...
在java 8 里面新增了functional interface 这个概念。并且添加了新的annotation @FunctionalInterfaceI 1 什么是functional interface 函数式接口了?functional interface : functional interface only have 1 abstract method。 这就是函数接口的定义。简单明白,函数接口其实就是一个抽象方法的接口(interface). 2 函数式接口的类型这里我只介绍基本的几个类型Predicate<T>,Consumer<T>,Function<T, R>,Supplier<T>这些函数式...
java 8 去重和排序 排序的方法 List<Integer> lists = Arrays.asList(1,1,2,3);// 升序lists.sort(Comparator.comparing(Integer::intValue));// 降序lists.sort(Comparator.comparing(Integer::intValue).reversed());或者// 升序 lists.stream().sorted().collect(Collectors.toList());// 降序 lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); import java.util.*;
import java.util...
@Data
@AllArgsConstructor
@NoArgsConstructor
publicclass Apple {privateint wight;
}排序List<Integer> numList = new ArrayList<>(Arrays.asList(10, 50, 5, 200, 9, 25));
List<Apple> applelist = new ArrayList<Apple>() {{add(new Apple(10));add(new Apple(50));add(new Apple(5));add(new Apple(400));add(new Apple(9));}
};
// 常规升序
numList = numList.stream().sorted().collect(Collectors.toList());
// 常规逆...
目录一.ThreadLocal介绍 1.1 ThreadLocal的功能 1.2 ThreadLocal使用示例二.源码分析-ThreadLocal 2.1 ThreadLocal的类层级关系 2.2 ThreadLocal的属性字段 2.3 创建ThreadLocal对象 2.4 ThreadLocal-set操作 2.5 ThreadLocal-get操作 2.6 ThreadLocal-remove操作三.ThreadLocalMap类 3.0 线性探测算法解决hash冲突 3.1 Entry内部类 3.2 ThreadLocalMap的常量介绍 3.3 实例化ThreadLocalMap ...
1.Java8 内置的四大核心函数式接口 (1)Consumer<T> : 消费型接口 void accept(T t);(2)Supplier<T> : 供给型接口 T get();(3)Function<T, R> : 函数型接口 R apply(T t);(4)Predicate<T> : 断言型接口 boolean test(T t);2.四大核心函数式接口示例/*** 有参数无返回* Consumer<T> 消费型接口* void accept(T t);*/@Testpublicvoid test1(){happy(1000, (m) -> System.out.println("KTV消费"+m+"元...
在Java8之前,代码编译为class文件后,方法参数的类型固定,但是方法名称会丢失,方法名称会变成arg0、arg1....。而现在,在Java8开始可以在class文件中保留参数名,这就给反射带来了极大的遍历。像mybatis等需要使用反射机制获取方法参数的时候就可以不用像以前一样需要使用类似于@Para之类的注解。功能测试代码参考自,点击进入编写测试类import java.lang.reflect.Method;import java.lang.reflect.Parameter;publicclass GetRun...
java8中有两大最为重要的改变。一个是Lambda表达式,另一个是Stream API。Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。Stream API提供了一种高效且易于使用的处理数据的方式。先说下Stream的优势:Collection是一种静态的内存数据结构,面向内存存储在内存中,而Stream是有关计算的,面向CPU通过CPU实现计算的。它是java对...
本文的目录结构如下:一、LinkedHashSet 的 Javadoc 文档注释和简要说明二、LinkedHashSet 的内部实现:构造函数三、LinkedHashSet 的 add 操作和 remove 操作一、LinkedHashSet 的 Javadoc 文档注释和简要说明 还是以官方 javadoc 作为参考进行说明:LinkedHashSet 是 Set 接口的 hash table 和 linked list 实现,而且迭代顺序可预测(按照元素的插入顺序),实际上 LinkedHashSet 继承了 HashSet,内部使用了 LinkedHashMap ...
JAVA8新加的语法糖Lambda表达式//一个接口中只有抽象方法时可用//通过编译器帮我们推断类型//例子:事件监听器中 控件对象.addActionListener(e->JOptionpane.showMessageDiaLonh(null,提示语言););//抽象方法一个参数时(),多个参数(x1,x2,x3,..) @FunctionalInterface//直接判断下面的接口可否使用Lambda表达式Stream语法//数组->集合List<类型> list = Arrays.asList(数组对象);?//集合->数组String[] strs = list.toArray(new 类...
本文转载作者:liuxiaopeng博客地址:https://www.cnblogs.com/paddix/p/5309550.html一、JVM 内存结构 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也...
1. 概述函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。提到函数式接口肯定少不了 Lambda 表达式,函数式接口可以隐式的转换为 Lambda 表达式。我们可以选择向各种各样的方法和构造函数传递 Lambda 表达式,包括在 Java 8 之前创建的一些方法和构造函数。因为 Lambda 表达式在 Java 中表示为函数接口。2. 什么是函数式接口?先来看看传统的创建线程是怎么写的Thread t1 = new ...