工作记录----Lambda表达式和流式操作----小白也能看懂--写代码如何更简洁---12.13
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)的两种类型操作。它们组合在一起构成了流式操作的整个流程。
-
中间操作(Intermediate Operations):
- 这些操作允许你对流进行转换和处理,但不会触发流的遍历和实际处理。
- 中间操作返回的是另一个流,允许你将多个操作连接在一起,形成一个操作流水线。
- 一些常见的中间操作有:
filter()
:基于指定的条件过滤流中的元素。map()
:将流中的每个元素映射为另一个元素。sorted()
:对流中的元素进行排序。- 等等。
-
终端操作(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)的使用,它是对集合数据进行处理的便捷方式。
-
myList.stream()
:通过stream()
方法将List
转换为流,使得集合中的元素可以进行流式操作。 -
.filter(s -> s.length() > 5)
:filter
操作用于过滤流中的元素,这里使用Lambda表达式s -> s.length() > 5
过滤出长度大于5的元素。 -
.forEach(System.out::println)
:forEach
操作用于遍历流中的每个元素,并对每个元素执行指定的操作。这里使用System.out::println
方法引用,将符合条件的元素打印出来。
这段代码的效果是过滤出长度大于5的元素并将其打印出来。
List<String> sortedList = myList.stream() .map(String::toUpperCase) .sorted() .collect(Collectors.toList());
map(String::toUpperCase)
:使用map
操作将流中的每个字符串元素转换为大写形式。.sorted()
:对流中的元素进行排序,默认按字典顺序。.collect(Collectors.toList())
:使用collect
方法将流中的元素收集到一个新的List
中。
这段代码的效果是将原始列表中的元素转换为大写,并按照字典顺序排序,最后将排序后的结果收集到一个新的列表中。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!