赞
踩
Java的Lambda表达式是Java 8引入的一个特性,它支持函数式编程,允许将函数作为方法的参数或返回值,从而简化了匿名内部类的使用,并提供了对并行编程的更好支持。
Lambda表达式的使用前提是存在一个接口,该接口中有且只有一个抽象方法。在主方法中可以通过创建接口的匿名内部类或使用Lambda表达式来调用该接口的方法。
Lambda表达式的语法为(parameter_list) -> {function_body}
,其中->
将参数和实现逻辑分离,()
中的部分是需要传入Lambda体中的参数,{}
中的部分接收来自()
中的参数,并完成一定的功能。
Lambda表达式的主要优势包括:
Lambda表达式主要用于函数式接口,即只包含一个抽象方法的接口,可以使用@FunctionalInterface
注解进行标识。常用场景有:
Runnable runnable = () -> {System.out.println("Hello, Lambda!");};
numbers.forEach(n -> System.out.println(n));
filteredNames = names.stream().filter(name -> name.length() > 5).collect(Collectors.toList());
new Thread(() -> System.out.println("haha")).start();
二、使用场景
1、集合遍历
- List<String> stringList = Arrays.asList("apppe","organge","banana");
- // 原来的方式
- for (String s : stringList) {
- System.out.println(s);
- }
- // lambda 表达式
- stringList.forEach(s->{
- System.out.println(s);
- });
注意:-1:代表第一个对象,1:代表第二个对象
- List<Dog> dogs = Arrays.asList(new Dog[]{
- new Dog("n1", 12),
- new Dog("n2", 14),
- new Dog("n3", 11)
- });
- // 方法1
- Collections.sort(dogs, new Comparator<Dog>() {
- @Override
- public int compare(Dog o1, Dog o2) {
- return o1.getAge()>o2.getAge()?-1:1;
- }
- });
- // 方法2
- Collections.sort(dogs,(o1,o2)->(o1.getAge()>o2.getAge()?-1:1));
- dogs.forEach(s->{
- System.out.println(s.getAge());
- });
- List<String> stringList = Arrays.asList("apple","organge","banana");
- // 获取集合中所有以“a”开头的字符串
- // 原来的方式
- List<String> newList = new ArrayList<String>();
- for (String s : stringList) {
- if(s.startsWith("a")){
- newList.add(s);
- }
- }
- // lambda表达式
- List<String> newList2 = stringList.stream().filter(s -> {
- if(s.startsWith("a")){
- return true;
- }
- return false;
- }).collect(Collectors.toList());
- List<String> stringList = Arrays.asList("apple","organge","banana");
- // 获取集合中所有字符串的长度
- // 原来的方式
- List<Integer> newList = new ArrayList<Integer>();
- for (String s : stringList) {
- newList.add(s.length());
- }
- // lambda表达式
- List<Integer> newList2 = stringList.stream().map(s -> {
- return s.length();
- }).collect(Collectors.toList());
-
- // lambda 表达式
- newList2.forEach(s->{
- System.out.println(s);
- });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。