Lambda 表达式:
函数式接口可以用:@FunctionalInterface 修饰
Java8 内置的四大核心函数式接口:
- Consumer:消费性接口 void accept(T t);
- Supplier:供给型接口 T get();
- Function<T,R>:函数型接口 R apply(T t);
- Predicate:断言型接口 Boolean test(T t);
创建Stream的四种方式;
Stream的中间操作:
筛选与切片:
filter——接受Lambda,从流中排除某些元素。
limit——截断流,使其元素不超过给定数量。
skip(n)——跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流。与limit(n)互补。
distinct——筛选,通过流所生成元素的hashCode()和equals()去除重复元素。
映射:
map——接受Lambda,将元素转换成其他形式或提取信息。接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap——接受一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。
排序:
sorted()——自然排序(Comparable)
sorted(Comparator com)—定制排序(Comparator)
Stream的终止操作:
allMatch——检查是否匹配所有元素
anyMatch——检查是否至少匹配一个元素
noneMatch——检查是否没有匹配所有元素
findFirst——返回第一个元素
findAny——返回当前流中的任意元素
count——返回流中元素的总个数
max——返回流中最大值
min——返回流中最小值
实际用法: