Java基础一篇过(六)Java8--lambda表达式

一、简介

  lambda表达式是Java8的一个重要特性,也可以称为闭包,常用于配合Java8的Stream对集合元素进行操作,使得代码更简介紧凑。

二、代码解析

  虽说lambda表达式是一个新的特性,但是使用起来还是需要注意的,在对于引用对象来操作时,用lambda表达式可以使代码更简介,不过对于基本数据类型进行操作时,有时代码量反而会增大一些,这点见仁见智了,下面通过代码来学习下:

/**
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        /*场景一:给每个元素+1*/
        Integer arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        List<Integer> list = Arrays.asList(arr);

        //不用lambda
        for (int i = 0; i < list.size(); i++) {
            list.set(i, list.get(i) + 1);
        }
        System.out.println("不用lambda:" + list.toString());

        //使用lambda【配合Stream来获取下标进行元素操作】
        Stream.iterate(0, i -> i + 1).limit(list.size()).forEach(i -> {
            list.set(i, list.get(i) + 1);
        });
        System.out.println("使用lambda:" + list.toString());
    }

}

  配合上面的代码来看,若直接操作基本数据类型的集合,使用lambda代码量相对会多一些,日常开发中,大多数场景会用来操作对象的集合,下面看一下使用lambda表达式操作对象的集合是什么样的场景:

/**
 * 测试类
 */
public class Test {

    @Autowired
    private IUserInfoService iUserInfoService;

    /*场景二:获取每个对象*/
    public void test() {
        List<UserInfoVO> userList = iUserInfoService.queryList();
        
        //不使用lambda
        for (UserInfoVO vo : userList) {
            System.out.println(vo.toString());
        }

        //使用lambda
        userList.forEach(vo -> {
            System.out.println(vo.toString());//箭头前的vo实际就代指userList内的每一个UserInfoVO对象
        });
    }

}

  其实比较起来,传统写法与lambda表达式写法代码量差不多,结构表达也各有优势,lambda表达式主要是为了引出Java的函数式编程思想【类似于JavaScript的编写方式】,实际运用中以自己习惯的编码方式书写即可。

posted @ 2020-02-25 16:15  有梦想的肥宅  阅读(381)  评论(0编辑  收藏  举报