• java8-Lambda表达式01-初识Lamba表达式


    lambda表达式是java8最具代表性的特性,它是衔接java语言与函数式编程思想的一道桥梁,它给java编程带来革命性的变化。

    先来看几段代码, 对照感受一下:

    1、创建线程

    // 传统的匿名内部类方式
    Thread t1 = new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello world!");
        }
    });
    
    // lambda表达式方式
    Thread t2 = new Thread(() -> System.out.println("Hello java8"));

    2、通过实现Comparator接口排序

     1 List<String> list = Arrays.asList("java", "go", "python", "c++");
     2 // 传统排序写法
     3 Collections.sort(list, new Comparator<String>() {
     4     @Override
     5     public int compare(String s1, String s2) {
     6         return s1.compareTo(s2); // 按照字典顺序, 升序排列
     7     }
     8 });
     9 
    10 System.out.println("sorted asc: " + list);
    11 Collections.shuffle(list);  // 打乱
    12 System.out.println("shuffled: " + list);
    13 
    14 // lambda方式(带参数类型)
    15 Collections.sort(list, (String s1, String s2) -> s1.compareTo(s2));
    16 System.out.println("sorted asc: " + list);
    17 // lambda方式(不带参数类型)
    18 Collections.sort(list, (s1, s2) -> s2.compareTo(s1));
    19 System.out.println("sorted desc: " + list);

    结果:

    sorted asc: [c++, go, java, python]
    shuffled: [c++, java, python, go]
    sorted asc: [c++, go, java, python]
    sorted desc: [python, java, go, c++]

    3、swing编程里的事件绑定

    // 传统方式绑定事件
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent ae) {
            System.out.println("Add button clicked");
        }
    });
    // lambda 方式绑定事件
    button.addActionListener(e -> System.out.println("click"));

    结论:

     暂且不讨论起编译和运行效率,只从代码的感官层面说:

     优点: 代码量减少,代码变得更加精简, 能够节省一定的编码时间;样板性的代码被屏蔽。

     确点: 缺省了变量类型,会给代码阅读带来不便,如案例3中的变量e,如果不结合调用的上下文,很难一眼看出是ActionEvent类型。

    【技术的道路上,要知其然,更要知其所以然】
  • 相关阅读:
    Java中JDK,JRE和JVM之间的关系-(转载)
    linux(Ubuntu)安装QQ2013(转)
    Java-寻找矩阵连通域个数
    Linux 安装 python IDE
    Java学习笔记-数组与容器间的转制-asList
    由LCS到编辑距离—动态规划入门—算法学习笔记
    Java学习笔记-策略模式
    Java学习笔记-模板方法模式
    Java学习笔记-迭代器模式
    Java学习笔记-Collections.sort详解
  • 原文地址:https://www.cnblogs.com/weisiren/p/7710941.html
Copyright © 2020-2023  润新知