(二)会聚操作实战开云体育(中国)官方网站
在 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())将筛选后的收尾汇集到一个新的列表中。通过这种神志开云体育(中国)官方网站,咱们不错用直爽的代码完成复杂的会聚过滤操作,进步建造后果。