• Java学习 --- lambda表达式


    目录

    一、Java8的新特性

    二、并行流与串行流

    三、Lamdba表达式

    一、Java8的新特性

    1、速度更快 2、代码更少 3、强大的Stream APL 4、便于并行 5、最大化减少空指针异常

    6、Nashorn引擎,允许在JVM上运行JS应用。

    二、并行流与串行流

    1、并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。

    并行的流可以很大程度上提高程序的执行效率。

    2、Stream APL可以声明性地通过parallel()与sequential()在并行流与顺序流之间的切换。

    三、Lamdba表达式

    Lamdba是一个匿名函数,也就是一段可以传递的代码。可以写出更简洁、更灵活的代码,使Java的语言表达能力更强,lambda的本质是作为函数式接口的实例。

    示例代码:

    1. public class LambdaTest {
    2. @Test
    3. public void test1(){
    4. Runnable runnable = new Runnable() {
    5. @Override
    6. public void run() {
    7. System.out.println("你是老六");
    8. }
    9. };
    10. runnable.run();
    11. System.out.println("----使用lambda操作----");
    12. Runnable runnable1 = ()-> System.out.println("老六是你");
    13. runnable1.run();
    14. }
    15. @Test
    16. public void test2() {
    17. Comparator<Integer> comparator = new Comparator<Integer>() {
    18. @Override
    19. public int compare(Integer o1, Integer o2) {
    20. return Integer.compare(o1,o2);
    21. }
    22. };
    23. int compare = comparator.compare(11, 12);
    24. System.out.println(compare);
    25. System.out.println("----使用lambda操作----");
    26. Comparator<Integer> comparator1 = ((o1, o2) -> Integer.compare(o1,o2));
    27. int compare1 = comparator1.compare(56, 34);
    28. System.out.println("compare1 = " + compare1);
    29. System.out.println("----使用lambda操作2----");
    30. Comparator<Integer> comparator2 = Integer::compare;
    31. int compare2 = comparator2.compare(57, 45);
    32. System.out.println("compare2 = " + compare2);
    33. }
    34. }

     语法介绍:

    1. public class LambdaTest1 {
    2. @Test
    3. public void Test01(){
    4. /**
    5. * -> :lambda操作符,又叫箭头操作符
    6. * ->:左边是lambda的形参列表,即接口中的抽象方法的形参列表
    7. * -> 右边是lambda体,即重写的抽象方法的方法体
    8. */
    9. Runnable runnable = () -> System.out.println("5G");
    10. runnable.run();
    11. }
    12. }

    lambda不同的语法

    1. public class LambdaTest1 {
    2. @Test
    3. public void Test01(){
    4. //第一种:无参,无返回值
    5. Runnable runnable = () -> System.out.println("5G");
    6. runnable.run();
    7. //第二种:需要一个参数,没有返回值
    8. Consumer<String> consumer = (String str)-> System.out.println(str);
    9. consumer.accept("老六来了");
    10. //第三种:数据类型省略,由编译器推断自己推断
    11. Consumer<String> consumer1 = (str)-> System.out.println(str);
    12. consumer.accept("来了个老六");
    13. //第四种:当只有一个参数时,可以省略小括号
    14. Consumer<String> consumer2 = str-> System.out.println(str);
    15. consumer.accept("老六是谁呢?");
    16. //第五种:当只有两个或两个以上参数时,不可以省略小括号,多条执行语句,有返回值
    17. Comparator<Integer> comparator = (a1,a2)->{
    18. System.out.println(a1);
    19. System.out.println(a2);
    20. return a1.compareTo(a2);
    21. };
    22. int compare = comparator.compare(34, 45);
    23. System.out.println("compare = " + compare);
    24. //第六种:当只有一条语句时,return与大括号可以省略
    25. Comparator<Integer> comparator1 = (a1,a2)-> a1.compareTo(a2);
    26. int compare1 = comparator1.compare(56, 90);
    27. System.out.println("compare1 = " + compare1);
    28. }
    29. }

  • 相关阅读:
    vue devServer.proxy代理,统一后端域名配置和跨域解决
    剑指offer(C++)-JZ31:栈的压入、弹出序列(数据结构-队列 & 栈)
    2024年全国青少信息素养大赛python编程复赛集训第十二天编程题分享
    ChatGPT AIGC 制作大屏可视化分析案例
    JVM(九) —— 运行时数据区之堆的详细介绍(四)
    oracle 杀掉正在“执行”的SQL
    Leetcode 20有效的括号、33搜索旋转排序数组
    Java简历与面试
    现货白银的代码为什么不是ag
    请问如何在proteus里画出电压器两边的箭头?
  • 原文地址:https://blog.csdn.net/qq_46093575/article/details/125437848