工作记录----Lambda表达式和流式操作----小白也能看懂--写代码如何更简洁---12.13

2023-12-13 20:57:19

Lambda表达式是Java 8 引入的功能,而流式操作则是基于Lambda表达式的一种编程模式。

Lambda表达式

匿名函数是什么意思?
匿名函数是指没有名称的函数,允许开发者在需要函数的地方直接声明函数体,而无需为其分配一个显式的名称。
Lambda表达式就是一种匿名函数的形式。它允许将函数作为方法的参数,或者将代码块作为函数体传递给方法。主要用于简化代码。

// 传统方式:匿名内部类
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, Traditional!");
    }
};
//Lambda表达式的语法是使用箭头符号 ->,将参数列表和方法体隔开。
// Lambda表达式:简洁的写法
Runnable runnable2 = () -> System.out.println("Hello, Lambda!");

// 启动线程并执行
new Thread(runnable1).start();
new Thread(runnable2).start();

流式操作(Stream API)

流式操作是对集合数据进行操作的一种新方式,它提供了一种更高效、更简洁的方式来处理集合数据。流可以让你以声明式的方式对集合进行操作,它包含了一系列的中间操作和终端操作

中间操作(Intermediate Operations)允许你对流进行一系列的转换和处理,如 filter()、map()、sorted() 等。这些操作可以链式调用。

终端操作(Terminal Operations)则触发流的遍历并产生结果,例如 collect()、forEach()、count() 等。

中间操作和终端操作是Java流(Stream)的两种类型操作。它们组合在一起构成了流式操作的整个流程

中间操作和终端操作是Java流(Stream)的两种类型操作。它们组合在一起构成了流式操作的整个流程。

  1. 中间操作(Intermediate Operations)

    • 这些操作允许你对流进行转换和处理,但不会触发流的遍历和实际处理。
    • 中间操作返回的是另一个流,允许你将多个操作连接在一起,形成一个操作流水线。
    • 一些常见的中间操作有:
      • filter():基于指定的条件过滤流中的元素。
      • map():将流中的每个元素映射为另一个元素。
      • sorted():对流中的元素进行排序。
      • 等等。
  2. 终端操作(Terminal Operations)

    • 当你想要获取流处理结果时,必须触发终端操作。
    • 终端操作会遍历流并产生最终的结果或副作用,例如输出、收集到集合中或对每个元素执行某个操作。
    • 一些常见的终端操作有:
      • collect():将流中的元素收集到一个集合中。
      • forEach():对流中的每个元素执行特定操作。
      • count():统计流中元素的个数。
List<String> myList = Arrays.asList("apple", "banana", "cherry");

// 过滤出长度大于5的元素并打印
myList.stream()
      .filter(s -> s.length() > 5)
      .forEach(System.out::println);

// 将大写字母排序后收集为一个新的列表
List<String> sortedList = myList.stream()
                               .map(String::toUpperCase)
                               .sorted()
                               .collect(Collectors.toList());

这段代码展示了Java中流式操作(Stream API)的使用,它是对集合数据进行处理的便捷方式。

  1. myList.stream():通过stream()方法将List转换为流,使得集合中的元素可以进行流式操作。

  2. .filter(s -> s.length() > 5)filter操作用于过滤流中的元素,这里使用Lambda表达式s -> s.length() > 5过滤出长度大于5的元素。

  3. .forEach(System.out::println)forEach操作用于遍历流中的每个元素,并对每个元素执行指定的操作。这里使用System.out::println方法引用,将符合条件的元素打印出来。

这段代码的效果是过滤出长度大于5的元素并将其打印出来。

  1. List<String> sortedList = myList.stream() .map(String::toUpperCase) .sorted() .collect(Collectors.toList());
    • map(String::toUpperCase):使用map操作将流中的每个字符串元素转换为大写形式。
    • .sorted():对流中的元素进行排序,默认按字典顺序。
    • .collect(Collectors.toList()):使用collect方法将流中的元素收集到一个新的List中。

这段代码的效果是将原始列表中的元素转换为大写,并按照字典顺序排序,最后将排序后的结果收集到一个新的列表中。

文章来源:https://blog.csdn.net/qq_51711443/article/details/134971972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。