什么时候要用到Lambda写法(匿名内部类简洁写法,含有创建线程,遍历集合,遍历数组)

答:因为接口不能创建对象,当你new一个接口时,且接口只有一个抽象方法,你可以采用匿名内部类的普通写法,也可以使用lambda写法简写匿名内部类,也就是采用匿名内部类方式创建接口里的抽象方法的匿名(只用一次,没有变量存储)实现类对象;

参考匿名内部类的普通写法和Lambda写法区别

参考创建线程

说明:红色的是可以省略的,蓝色时省略省略下来的,并且如果蓝色区域内的传参括号内参数只有一个,直接写参数变量即可

补充:不仅仅是抽象方法,还有抽象类也可以使用

参考集合遍历和数组遍历

说明:里面有些方法需要建立在jdk8版本的基础上

package com.jt.project;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

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

        /**集合遍历写法*/
        List<String> list = Arrays.asList("A", "B", "C");
        /**遍历集合 */
        /*匿名内部类基本写法*/
        System.out.print("匿名内部类基本写法");
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.print(s);
            }
        });
        System.out.println("----------------");
        /*匿名内部类简洁写法,也就是使用lambda写法,
        可以省略省略new接口,省略重写注解,省略抽象方法,省略参数类型
        只需要括号(参数)加箭头->加重写抽象方法的方法体{方法体}*/
        System.out.print("匿名内部类简洁写法");
        list.forEach((s)-> {
                System.out.print(s);
            });
        System.out.println("----------------");
        /*匿名内部类超简洁写法,需要建立在jdk8版本的基础上
        * 参数和小括号都可以省了,并且
        * System.out.print(s)换成System.out::print*/
        System.out.print("匿名内部类超简洁写法");
        list.forEach(
            System.out::print
        );
        System.out.println("----------------");


        /**数组遍历写法1,难度低*/
        String strArray[]={"abc","ab","a"};
        /*数组遍历基本写法*/
        Arrays.asList(strArray).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        /*数组遍历简洁写法*/
        Arrays.asList(strArray).forEach((s)-> {
                System.out.println(s);
        });
        /*数组遍历超简洁写法*/
        Arrays.asList(strArray).forEach(System.out::println);

        /**数组遍历写法2,难度稍大*/
        /*数组遍历基本写法*/
        Arrays.sort(strArray, new Comparator<String>() {
                    @Override
                    public int compare(String o1, String o2) {
                        return o1.length() - o2.length();
                    }
                });
        Arrays.asList(strArray).forEach(System.out::println);

        /*遍历数组简洁写法*/
        Arrays.sort(strArray, (o1, o2) -> {
                    return o1.length() - o2.length();
                });

        Arrays.asList(strArray)
                .forEach(System.out::println);

        /*遍历数组超级简洁写法*/
        Arrays.sort(strArray);

        Arrays.asList(strArray)
                .forEach(System.out::println);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值