一.内部类
二.lambda表达式
1.带参数无返回值
2.无参数有返回值
3.带参数有返回值
三.stream流(大大提升了代码的书写简洁)
流的分组:
Collectors.groupingBy
接下来这个示例,将会按年龄对所有人进行分组:
Map<Integer, List<Person>> personsByAge = persons
.stream()
.collect(Collectors.groupingBy(p -> p.age)); // 以年龄为 key,进行分组
personsByAge
.forEach((age, p) -> System.out.format("age %s: %s\n", age, p));
// age 18: [Max]
// age 23: [Peter, Pamela]
// age 12: [David]
流的排序和过滤:
Stream.of("d2", "a2", "b1", "b3", "c")
.sorted((s1, s2) -> {
System.out.printf("sort: %s; %s\n", s1, s2);
return s1.compareTo(s2); // 排序
})
.filter(s -> {
System.out.println("filter: " + s);
return s.startsWith("a"); // 过滤出以 a 为前缀的元素
})
.map(s -> {
System.out.println("map: " + s);
return s.toUpperCase(); // 转大写
})
.forEach(s -> System.out.println("forEach: " + s)); // for 循环输出
将流中的对象转换为另一种类型
FlatMap 或者 map
Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合_云深i不知处的博客-优快云博客
Stream流
在不是很了解stream流时,我们常用的是for循环去对集合进行操作。而现如今,随着stream流的普及,大家可以尝试着用stream流去代替for循环,好处有二,第一,stream流的执行效率要高于for循环,第二,用stream流比用for循环显得水平高点,代码更简洁好看一些。第三,stream流可以做筛选,不必通过SQL语句进行筛选。
代码参考挺不错的
java代码优化之stream流+判空_呀呼嘿—yara的博客-优快云博客_stream判空
三.1.获取stream流
三.2 stream流的中间方法
三.3 stream流的终结操作
三.4 stream流不能直接修改数据源中的数据(记住........)
三.5 stream流的收集操作
四.链式编程
五.泛型(ArrayList就是一个泛型类可以参考源码)
五.1 自定义泛型类(泛型给里边可以存任意数据类型,创建对象的时候可以确定类型)
五.2 自定义泛型方法(方法在被调用的时候确定类型)
五.3泛型接口
五.4类型通配符
六,Optional对象判空
JDK1.8新特性 Optional判空详解,简化判空操作_Thinkingcao的博客-优快云博客_optional判空
七,方法的引用 ( :: )
十九、Java8新特性——方法引用【黑马JavaSE笔记】_-BoBooY-的博客-优快云博客
000