JAVA单排日记-2020/1/22-Lambda表达式

  • 思想:简化代码,不注重过程,只注重结果
  • Lambda表达式格式:
  • 一些参数
  • 一个箭头
  • 一段代码
(参数)->{一些重写方法的代码}
  • 无参数,无返回值
  • 例子1:
public class DemoLambda01 {
    public static void main(String[] args) {

        new Thread(){
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        }.start();


        new Thread(
            ()->{
                System.out.println(Thread.currentThread().getName());
            }
        ).start();
    }
}

在这里插入图片描述

  • 例子2:
public interface Cooker {
    public abstract void cook();
}
public class DemoLambda02 {
    public static void main(String[] args) {

        cookfood(()->{
            System.out.println("吃饭");
        });
    }

    public static void cookfood(Cooker c){
        c.cook();
    }
}

在这里插入图片描述

  • 有参数,有返回值
  • 普通程序
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Demo03 {
    public static void main(String[] args) {
        Person[] array = {
                new Person("张三",22),
                new Person("李四",14),
                new Person("王五",35)
        };

        Arrays.sort(array, new Comparator<Person>() {
            @Override
            public int compare(Person person, Person t1) {
                return person.getAge()-t1.getAge();
            }
        });

        for (Person p:array){
            System.out.println(p);
        }
    }
}

在这里插入图片描述

  • Lambda表达式版本
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Demo03 {
    public static void main(String[] args) {
        Person[] array = {
                new Person("张三",22),
                new Person("李四",14),
                new Person("王五",35)
        };

       /* Arrays.sort(array, new Comparator<Person>() {
            @Override
            public int compare(Person person, Person t1) {
                return person.getAge()-t1.getAge();
            }
        });*/

       Arrays.sort(array,(Person person, Person t1)->{ 
           return person.getAge()-t1.getAge();});

        for (Person p:array){
            System.out.println(p);
        }
    }
}

在这里插入图片描述

  • 练习:
    在这里插入图片描述
public interface Calculator {
    public abstract int calc(int a,int b);
}
public class Demo01 {
    public static void main(String[] args) {
        add((int a,int b)->{
            return a+b;
        },22,34);
    }

    public static void add(Calculator c,int a,int b){
        int sum = c.calc(a,b);
        System.out.println(sum);
    }
}

在这里插入图片描述

发布了103 篇原创文章 · 获赞 1 · 访问量 2659

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104068087