JAva 8-lambda式

2777 ワード

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);
    }

}