lambda表达式
组成的部分 :
参数列表,箭头(->),以及一个表达式或者语句块
表达式的类型:
表达式的目标类型是“函数接口”,"函数接口",一个接口,如果只有一个显式声明的的抽象方法,他则可以认为一个函数接口。(可以用@FunctionalInterface 声明)
jdk预定义的借口:Function:典型转换的 T类型->R类型。
@FunctionalInterface
public interface Function{
R apply(T t);
}
Consumer:消费的,T->装成void的
@FunctionalInterface
public interface Consumer {
void accept(T t);
}
Predicate:判断的,T -> boolean
@FunctionalInterface
public interface Predicate {
boolean test(T t);
}
使用的场景:
主要用于使用匿名类的地方。
λ表达式与集合类批处理操作:stream流的概念
for 循环
1.8之前
for(Object o: list) { // 外部迭代
System.out.println(o);
}
1.8版本
list.forEach(new Consumer(t){
System.out.println(t);
});
lambda 表达式的后
list.forEach(t->System.out.println(t));
stream 数据流
就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返
stream的一些概念:
Terminal操作:当这个操作执行后,流就被使用“光”了,一个流有且只有一个Terminal的操作,并且作为流的最终的操作的方法
Intermediate操作:是惰性的操作,除非到了Terminal的操作,他采取一一的去执行
常见的Terminal操作:
map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip
常见的Intermediate操作:
forEach、 toArray、 reduce、 collect、 min、 max、 count
stream的生成:
list->Stream
Stream stream=list.stream();
System.out.println(stream.count());
value->Stream
Stream stream = Stream.of("a", "b", "c");
arrays->stream
String [] strArray = new String[] {"a", "b", "c"};
// 1 stream = Stream.of(strArray);
// 2 stream = Arrays.stream(strArray);
stream的转化其它的值
stream->Array
String[] strArray1 = stream.toArray(String[]::new);
stream->Collection
List list1 = stream.collect(Collectors.toList());
List list2 = stream.collect(Collectors.toCollection(ArrayList::new));
Set set1 = stream.collect(Collectors.toSet());
stream->String
String str = stream.collect(Collectors.joining()).toString();
Stream的常见api的说明:
map:转化的 数据源的里面的参数的类型,stream<T> ->stream<R>标准的1对1,接收Function的接口
flatMap:转化成数据的源所有的数据装成相应的stream,stream<List<T>>->stream<R>, 多对一或者一对一。接收Function的接口
filter:过滤,里面是一个Predicate的接口,过滤满足条件的数据,接收Predicate的接口
distinct:去重
sorted:排序 ,接收Comparator的接口
peek:?,接受一个Consumer的接口,对每一个数据做一些处理工作。
limit:限制大小
skip:跳过
forEach:迭代
toArray:转成array
reduce:以第一个数据为种子,最后剪成最后一个
collect:形成collection
min:最小
max:最大
count:技术
网友评论