Java8知识点
Stream用法
- 1.对于List可以调用
.stream()
方法开启流.
- 2.对stream过滤调用
.filter()
方法,参数传递过滤的条件,可用lambda表达式.
- 3.对于统计可直接在stream后调用
.count()
方法获取统计个数.
- 4.对于排序操作可在stream后调用
.sorted()
方法,参数传递排序的条件,如Comparator.comparingInt(User::getAge)
,默认从小到大,接着调用.reversed()
方法可反转排序条件.
- 5.在操作结束时调用
.collect()
方法可获取处理结果,参数传递需要接受的返回参数类型,如Collectors.toList()
可以获取一个List结果,Collectors.toCollection(LinkedList::new)
可以获取一个LinkedList结果.
- 6.如果需要对操作对象进行转化,可在stream后调用
.map()
方法,参数传递类型转化的条件,如map(User::getName)
可以获取List中的Name.
- 7.如果要操作的对象是String,调用String的
chars()
方法,可以将String转化为一个IntStream后,进行stream处理.
- 8.对操作的对象分组调用
.collect(Collectors.groupingBy())
,参数传递分组的条件;同时需要分组+排序时,可以先排序再分组.
- 9.stream的处理结果可以获取map类型的返回数据,在
collect()
中传递Collectors.toMap()
方法,toMap的参数为需要映射/转换的数据类型,如toMap(Order::getId, order -> order)
.
- 10.将stream的元素连接在一起,可以在.collect() 中调用
Collectors.joining()
,参数传递连接的符号,如,
.
- 11.诸如
List<List<>>->List<>
这样的转换可以用stream.flatMap(List::stream).collect(toList())
来实现
- 12.
boolean anyMatch(Predicate<? super T> predicate)
只要有一个条件满足即返回true;
boolean allMatch(Predicate<? super T> predicate)
必须全部都满足才会返回true;
boolean noneMatch(Predicate<? super T> predicate)
全都不满足才会返回true
- 13.