(二)集合操作实战
在 Java 编程中,集合是我们经常使用的数据结构,而 Lambda 表达式为集合操作带来了前所未有的便利,让我们可以用更加简洁、优雅的方式对集合进行遍历、过滤、映射、排序等操作。
1. 集合遍历
在传统的 Java 编程中,我们遍历集合通常使用for循环或foreach循环。例如,遍历一个整数列表并打印每个元素:
TypeScript
取消自动换行复制
import java.util.ArrayList;
import java.util.List;
publicclassMain {
publicstaticvoidmain(String[] args) {
List<Integer> list = newArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
for (Integer num : list) {
System.out.println(num);
}
}
}
虽然这种方式能够实现遍历功能,但代码略显冗长。而使用 Lambda 表达式结合forEach方法,代码可以简化为:
TypeScript
取消自动换行复制
import java.util.ArrayList;
import java.util.List;
publicclassMain {
publicstaticvoidmain(String[] args) {
List<Integer> list = newArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.forEach(num -> System.out.println(num));
}
}
这里的list.forEach(num -> System.out.println(num))使用 Lambda 表达式定义了对集合中每个元素的操作,即打印元素。Lambda 表达式num -> System.out.println(num)接收一个参数num,并将其打印到控制台。这种写法更加简洁明了,并且能够更好地体现代码的意图。
2. 集合过滤
从集合中筛选出符合特定条件的元素是常见的操作。例如,从一个字符串列表中筛选出所有长度大于 5 的字符串,使用传统方式实现如下:
TypeScript
取消自动换行复制
import java.util.ArrayList;
import java.util.List;
publicclassMain {
publicstaticvoidmain(String[] args) {
List<String> list = newArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
list.add("JavaScript");
list.add("Ruby");
List<String> filteredList = newArrayList<>();
for (String str : list) {
if (str.length() > 5) {
filteredList.add(str);
}
}
for (String str : filteredList) {
System.out.println(str);
}
}
}
这段代码使用了两个循环,一个用于筛选元素,一个用于打印筛选后的结果,代码较为繁琐。而使用 Lambda 表达式结合流 (Stream) API,代码可以简化为:
TypeScript
取消自动换行复制
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
publicclassMain {
publicstaticvoidmain(String[] args) {
List<String> list = newArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
list.add("JavaScript");
list.add("Ruby");
List<String> filteredList = list.stream()
.filter(str -> str.length() > 5)
.collect(Collectors.toList());
filteredList.forEach(System.out::println);
}
}
在这段代码中,list.stream()将集合转换为流,流是一种支持顺序和并行聚合操作的数据源。filter(str -> str.length() > 5)使用 Lambda 表达式筛选出长度大于 5 的字符串,collect(Collectors.toList())将筛选后的结果收集到一个新的列表中。通过这种方式,我们可以用简洁的代码完成复杂的集合过滤操作,提高开发效率。

