01-jdk8 lambda表达式的使用

public class Demo1 {

    public static void main(String[] args) {
        Runnable runnable=new Runnable() {
            public void run() {
                System.out.println("执行了.....");
            }
        };
        new Thread(runnable).start();

        Runnable runnable2=()->{
            System.out.println("执行了...");
        };
        new Thread(runnable2).start();

        Runnable runnable3=()->System.out.println("执行了...");
        new Thread(runnable3).start();

        new Thread(()->System.out.println("执行了...")).start();

        /
        Comparator<String> com=new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        };

        Comparator<String> com2=(o1,o2)->{
            return o1.length()-o2.length();
        };

        TreeSet<String> treeSet=new TreeSet<>(com2);
        TreeSet<String> treeSet2=new TreeSet<>((o1,o2)->o1.length()-o2.length());

    }
}
/**
 * 函数式接口
 * @author 
 * @date 2020/11/15 18:54
 */
@FunctionalInterface //验证是否是函数式接口
public interface Usb {
    void service();
}

public class Demo2 {

    public static void main(String[] args) {
        Usb mouse=new Usb() {
            @Override
            public void service() {
                System.out.println("鼠标开始工作了 。。。。");
            }
        };
        run(mouse);

        run(()-> System.out.println("风扇开始工作了。"));
    }

    public static void run(Usb usb){
        usb.service();
    }
}

public class Demo3 {
    public static void main(String[] args) {

        //匿名内部类方式
        Consumer<Double> consumer=new Consumer<Double>() {
            @Override
            public void accept(Double t) {
                System.out.println("聚餐消费:"+t);
            }
        };
        happy(consumer,1000);

        //lambda表达式方式
        happy(t-> System.out.println("聚餐消费:"+t),1000);
        happy(t-> System.out.println("ktv消费:"+t),800);
        happy(t-> System.out.println("足疗消费:"+t),3000);


        //供给型接口
        int[] arr=getNums(()->new Random().nextInt(100),6);
        System.out.println(Arrays.toString(arr));

        int[] arr2=getNums(()->new Random().nextInt(1000),10);
        System.out.println(Arrays.toString(arr2));

        //函数式接口
        String result=handlerString(s->s.toUpperCase(),"hello");
        System.out.println(result);

        String result2=handlerString(s->s.trim()," hello ");
        System.out.println(result2);

        //断言式接口
        List<String> names=new ArrayList<String>();
        names.add("zhangsan");
        names.add("zhangwuji");
        names.add("wangsu");
        names.add("2134");
        List<String> resultLst=filterNames(t->t.indexOf("i")>0,names);
        System.out.println(resultLst);

    }

    // Consumer 消费型接口
    public static void happy(Consumer<Double> consumer,double money){
        consumer.accept(money);
    }

    //Supplier供给型接口
    public static int[] getNums(Supplier<Integer> supplier,int count){
        int[] arr=new int[count];
        for(int i=0;i<count;i++){
            arr[i]=supplier.get();
        }
        return arr;
    }

    //Function 函数型接口
    public static String handlerString(Function<String,String> function,String str){
        return function.apply(str);
    }

    //Predicate 断言型接口
    public static List<String> filterNames(Predicate<String> predicate,List<String> list){
        List<String> resultList=new ArrayList<String>();
        for(String string:list){
            if(predicate.test(string)){
                resultList.add(string);
            }
        }
       return resultList;
    }

}

public class Employee {



    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Employee(String name) {
        this.name = name;
    }

    public Employee() {
        this.name = name;
    }
}
/**
 * 方法引用的使用
 *  1、对象::实例方法
 *  2、类::静态方法
 *  3、类::实例方法
 *  4、类::new
 * @author 
 * @date 2020/11/15 20:22
 */
public class Demo4 {

    public static void main(String[] args) {
        //对象::实例方法
        Consumer<String> consumer=s-> System.out.println(s);
        consumer.accept("a");

        Consumer<String> consumer2=System.out::println;
        consumer2.accept("world");

        //类::静态方法
        Comparator<Integer> com=(o1,o2)->Integer.compare(o1,o2);
        Comparator<Integer> com2=Integer::compare;
        int s=com2.compare(1,3);
        System.out.println(s);

        //类::实例方法
        Function<Employee,String> function=e->e.getName();
        Function<Employee,String> function2=Employee::getName;
        System.out.println(function2.apply(new Employee("小明")));

        //类::new
        Supplier<Employee> supplier=()->new Employee("1");
        Supplier<Employee> supplier2=Employee::new;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值