java8--lambda表达式

1.目的:简化代码

2.总结:注意lamdba的规范,常量参数,实现接口

package lamdmademo;

import java.time.LocalDate;
import java.util.*;

public class Demo {
    public static void main(String[] args) {
        Demo demo=new Demo();

        //lambda表达式
        Integer num=2;
        Converter s=(param)-> System.out.println(param+num);
        s.convert(3);

        LocalDate date=LocalDate.now();
        System.out.println(date);

        //使用lambda排序
        List list= new ArrayList<>();
        List list2= new ArrayList<>();
        list.add("hvfds");
        list.add("abref");
        list.add("csdrv");
        list.add("bbsrd");
        list2.add("hasrdb");
        list2.add("aasrb");
        list2.add("carsb");
        list2.add("barvb");
        
        //使用java7排序
        System.out.println("使用java7排序");
        demo.sortUsingjdk7(list);
        //使用java8排序
        System.out.println("使用java8排序");
        demo.sortUsingjdk8(list2);

        System.out.println(list);
        System.out.println(list2);

        //lambda实现接口的方法
        MathOperation additional=(Integer s1,Integer s2)-> s1+s2 ;
        MathOperation device=(Integer s1,Integer s2)->s1/s2;
        MathOperation sub=(Integer s1, Integer s2)->s1-s2;
        //调取operate方法
        System.out.println("10+5="+demo.operate(10,5,additional));
        System.out.println("10/5="+demo.operate(10,5,device));
        System.out.println("10-5="+demo.operate(10,5,sub));

        //定义变量,两种情形,一变量声明为final,另一种变量可以不用final声明,但之后不能进行修改
        final String hello="HELLO,";
        //实现接口方法
        SayHello sayHello=message -> System.out.println(hello+message);
        //调用方法
        sayHello.sayMessage("JDK8");



    }

    //使用java7排序
    //匿名内部类相当于接口实现
    public void sortUsingjdk7(List list){
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });
    }

    // 使用 java 8 排序
    public void sortUsingjdk8(List list){
        Collections.sort(list,(s1,s2) -> s1.compareTo(s2));
    }






    //接口一
    interface MathOperation {
        int operation(Integer a, Integer b);
    }
    //接口二
    interface SayHello{
        void sayMessage(String message);
    }
    //接口三
    interface Converter {
        void convert(int i);
    }

    //使用接口一的方法
    private int operate(Integer a,Integer b,MathOperation mathOperation){
        return mathOperation.operation(a,b);
    }

}

 

你可能感兴趣的:(java)