Java8 函数式编程——基础篇

函数式编程

一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算(lambda calculus)为该语言最重要的基础。

特性

函数是“第一等公民”

函数与其他数据类型一样,可以赋值给其他变量,也可以作为参数,也可以作为返回值

不可变性

像闭包一样,传入的自由变量是不可变的,降低数据的不一致性。同时也只返回新的值,不修改变量状态,没有“副作用”。

为什么使用

  • 代码简洁,开发快速
  • 易于理解,降低风险
  • 易于并行
  • 延迟执行

例: 根据用户名批量并行获取工号

Before

public List<String> listEmployIds(List<String> usernames) throws Exception {
   
        CountDownLatch countDownLatch = new CountDownLatch(usernames.size());
        ConcurrentHashMap<String, UserDTO> mapping = new ConcurrentHashMap<>();
        for (String username : usernames) {
   
            ThreadPoolUtil.execute(() -> {
   
                UserDTO user = userService.getUserDetail(username);
                mapping.put(username, user);
                countDownLatch.countDown();
            });
        }
        countDownLatch.await();
        List<String> employIds = new ArrayList<>(usernames.size());
        for (UserDTO user : mapping.values()) {
   
            employIds.add(user.getEmployeeId());
        }
        return employIds;
    }

After

public List<String> listEmployIds(List<String> usernames) throws Exception {
   
      return usernames.parallelStream().map(userService:

你可能感兴趣的:(技术拾遗,java8,函数式编程,lambda)