zoukankan      html  css  js  c++  java
  • 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的编写方式】,实际运用中以自己习惯的编码方式书写即可。

  • 相关阅读:
    九度OJ 1131:合唱队形 (DP、最长上升下降序列)
    九度OJ 1130:日志排序 (排序)
    九度OJ 1129:Skew数 (大数运算)
    九度OJ 1128:求平均年龄 (基础题)
    九度OJ 1127:简单密码 (翻译)
    九度OJ 1126:打印极值点下标 (基础题)
    九度OJ 1125:大整数的因子 (大数运算)
    九度OJ 1124:Digital Roots(数根) (递归)
    存储过程
    Cookie 和 Session
  • 原文地址:https://www.cnblogs.com/riches/p/12362282.html
Copyright © 2011-2022 走看看