欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Lambda表达式

Lambda表达式

2024/10/25 11:19:01 来源:https://blog.csdn.net/xujinwei_gingko/article/details/142102754  浏览:    关键词:Lambda表达式

Lambda表达式:可以理解就是一个接口的实现,将接口实现类的一段代码赋值给一个接口变量
函数式接口:一个interface里面只有1个接口

public interface Operator {int add(int i,int j);
}

上述定义了一个Operator接口 ,下方代码将实现类的代码赋值给了接口operator

Operator operator = (a,b) -> {return a + b;};

以上代码等价于:

 Operator operator2 = new Operator() {@Overridepublic int add(int i, int j) {return i+j;}};

jdk中常用的函数式接口定义在java.util.function项下,如Predicate、Consumer、Function等,在集合List,Set,Map的流式编程的方法(如map、filter)等方法中,方法入参大量采用了Predicate、Consumer、Function表达式

完整实例如下:


import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class Test {public static void main(String[] args) {//Lambda表达式可以理解就是一个接口的实现,将接口实现类的一段代码赋值给一个接口变量Operator operator = (a,b) -> {return a + b;};//上述代码等价于/*Operator operator2 = new Operator() {@Overridepublic int add(int i, int j) {return i+j;}};*/System.out.println(operator.add(10,20));//函数式接口:一个interface里面只有1个接口,java函数式接口定义在 java.util.function下//Predicate 断言函数式接口 boolean test(T t);Predicate<String> predicate = s -> s.contains("abc");System.out.println(predicate.test("abcdefg"));//true//Consumer 消费函数时接口 void accept(T t);Consumer<String> consumer = s -> {String newStr = s.toUpperCase();System.out.println(newStr);//ABCDEFG};consumer.accept("abcdefg");//Function 方法接口 R apply(T t);Function<String, Integer> function = (s) -> {return s.length();};System.out.println(function.apply("abcdefg"));//7//集合流编程List<String> list = new ArrayList<>();list.add("Lily");list.add("Andy");list.add("Jackson");list.add("Smith");Stream<String> stream = list.stream();//filter的参数是一个 Lambda表达式predicateList<String> filterList = stream.filter(s->s.contains("n")).collect(Collectors.toList());System.out.println(filterList);//[Andy, Jackson]//map的参数是 Lambda表达式Functionstream = list.stream();List<String> mapList = stream.map(s -> {return s.substring(1);}).collect(Collectors.toList());System.out.println(mapList);//[ily, ndy, ackson, mith]}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com