zoukankan      html  css  js  c++  java
  • [2017.02.23] Java8 函数式编程

    以前学过Haskell,前几天又复习了其中的部分内容。
    函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list、map、set,以及在这些数据结构上的专门定制化操作,来实现代码的复用。同时函数式编程有惰性求值、高阶函数、柯里化、Point-free等风格,常用的几个函数式风格的操作有 map、filter、reduce/foldr/foldl 等。 Haskell是一种纯函数式编程语言,函数没有副作用。而Python语言和Java8等则是多范式编程语言,提供了部分的函数式编程的实现。
    今天阅读《Java8 函数式编程 (Java 8 Lambdas: Functional Programming for the Masses)》的前几章,编写一个简单的小程序,尽量更多地使用和测试Java8中的lambda表达式、Stream流操作、惰性求值等函数式编程风格。
    PS. 最近读了不少的书籍,很多书对自己真正有用的部分真的不多。曾经傻啦吧唧地拿到一本书从头到尾没有重点地看,时间没少花费,效果却差强人意。阅读呀,有时候还是要带着目的去读,不管是不是功利性地,只要能够学得快记得牢用得好,过程都不是问题!

    
    /**
     * Created by auss on 17-2-23.
     */
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World!");
            test_lambda();
        }
    
        public static void test_lambda() {
            List<Integer> ilist = Stream.of(Arrays.asList(1, 2, 3, 4, 5), Arrays.asList(6, 7, 8, 9))
                    .flatMap(number -> number.stream()) // 合并,惰性求值
                    .peek(value -> System.out.println("  " + value.toString())) // 遍历输出
                    .collect(Collectors.toList()); //输出位list,触发及时求值操作
    
            Integer res = ilist.stream()  //List转化为Stream对象 stream()串行流,parallelStream()并行流
                    .parallel()  //将Stream并行化处理
                    .filter(value -> value % 2 != 0)  //过滤奇数
                    .map((value) -> value * 3 + 1)    //乘以3,加上1
                    .reduce(0, (acc, elem) -> acc + elem); // 累加求和,初始值为0,
            System.out.println("Result : " + res.toString());      // 变量的自动装线与拆箱
        }
    }
    
  • 相关阅读:
    LeetCode 234——回文链表
    【转】Jmeter常见问题
    【转】JMeter 聚合报告之90% Line参数说明
    【转】Jmeter + DadBoby 安装使用
    【转】JMeter远程测试
    【转】关于一个Jmeter interface testing的实例
    【转】Jmeter 代理服务器录制脚本
    【转】Jmeter和LR上传文件和下载
    【转】Jmeter JDBC请求的问题
    【转】Jmeter的正则表达式未正确提取数据
  • 原文地址:https://www.cnblogs.com/ausk/p/6435093.html
Copyright © 2011-2022 走看看