lambda 表达式
1、lambda表达式的作用
个人理解卵用没有,但是用的还很多,不会还不行。
2、什么情况下可以用
函数式接口的情况下用,什么是函数式接口呢,接口里有且只有一个接口的时候才能用表达式(@FunctionalInterface 这个注解修饰
)(除了接口中的 默认方法和静态方法)
3、lambda表达式语法说明
/** * * ->是叫箭头操作符 * -> 左边是型参列表,指的是接口方法里面的参数 * -> 右边是lambda体,实现接口重写方法时,方法里面的方法体,不用关心方法叫什么名字 * * 接口里面只能有一个方法,两个方法就玩不转了 */
4、使用举例
4.1没有参数没有返沪值
@Test
public void test1(){
/**
* 无参无返回值
*/
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("我爱北京天安门");
}
};
runnable.run();
//改成lambda 表达式的写法
System.out.println("*******************");
// 表达式的本质是:作为接口的一个实例
Runnable runnable1 = () -> System.out.println("我爱北京故宫");
runnable1.run();
}
4.2 有一个参数没有返回值
public interface Consumer<T> {
public void accept(T t);
}
/**
* 一个参数 没有返回值
*/
@Test
public void test2(){
System.out.println("====================");
Consumer<String> c =(s) -> {
System.out.println(s);
};
c.accept("ceshi lambda");
}
4.3表达式有两个或两个以上的参数,多条执行语句,并且有返回值时
@Test
public void test5(){
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
};
System.out.println("*****************");
Comparator<Integer> com = (o3,o4)->{
System.out.println(o3);
System.out.println(o4);
return o3.compareTo(o4);
};
System.out.println(com.compare(12,34));
}
4.4 lambda表达式的参数部分指定参数类型
SingleOutputStreamOperator<Tuple2<String, Integer>> wordAndOneDS = linDs
.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
// 按照 空格 切分
String[] words = value.split(" ");
for (String word : words) {
// 转换成 二元组 (word,1)
Tuple2<String, Integer> wordsAndOne = Tuple2.of(word, 1);
// 通过 采集器 向下游发送数据
out.collect(wordsAndOne);
}
}
});
// lambda还可以这样的写啊
socketDS.flatMap((String value, Collector<Tuple2<String,Integer>> out)->{
String[] words = value.split(" ");
for (String word : words) {
// 转换成 二元组 (word,1)
Tuple2<String, Integer> wordsAndOne = Tuple2.of(word, 1);
// 通过 采集器 向下游发送数据
out.collect(wordsAndOne);
}
});
浙公网安备 33010602011771号