目录
一、开篇:为什么 Java 8 是划时代的版本?
Java 8 的发布,彻底改变了 Java 的开发方式。它引入了 Lambda 表达式 和 Stream API,让代码更简洁、更高效,同时大幅提升了函数式编程的能力。今天,我们将通过 Comparator、Consumer、Filter、Sorted、Map、Match、Count、Reduce、flatMap 等核心特性,带你感受 Java 8 的魅力!
二、Comparator:排序的灵活利器
使用场景
当需要对集合进行自定义排序时,Comparator 是必不可少的工具。
代码示例
List<String> languages = Arrays.asList("Java", "Python", "C++");
languages.sort(Comparator.comparingInt(String::length));
System.out.println(languages);
// 输出:[C++, Java, Python]
总结
Comparator 结合 Lambda 表达式,让排序逻辑更清晰、更灵活。
三、Consumer:消费行为的优雅表达
使用场景
在遍历集合时,Consumer 可以简洁地处理每个元素,而不需要显式定义循环。
代码示例
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println("Hello, " + name));
总结
Consumer 让代码更简洁,尤其适合处理“遍历+操作”的场景。
四、Filter 过滤:精准筛选数据
使用场景
从集合中筛选出符合条件的元素,替代传统的 for 循环和 if 判断。
代码示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出:[2, 4]
总结
Filter 让数据筛选更直观,链式调用提升代码可读性。
五、Sorted 排序:流式排序的终极方案
使用场景
对流中的元素进行排序,支持自定义 Comparator。
代码示例
List<String> words = Arrays.asList("banana", "apple", "cherry");
List<String> sortedWords = words.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedWords); // 输出:[apple, banana, cherry]
总结
Sorted 方法让排序操作更简洁,无需手动调用 Collections.sort()
。
六、Map 转换:一键映射数据结构
使用场景
将流中的元素转换为另一种形式,例如将字符串转换为长度。
代码示例
List<String> words = Arrays.asList("java", "python", "c++");
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(lengths); // 输出:[4, 6, 3]
总结
Map 方法让数据转换更高效,链式调用让逻辑更清晰。
七、Match 匹配:快速判断数据特征
使用场景
检查流中是否满足某些条件,例如是否存在某个元素。
代码示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean allEven = numbers.stream().allMatch(num -> num % 2 == 0);
System.out.println(allEven); // 输出:false
总结
Match 系列方法(allMatch、anyMatch、noneMatch)让条件判断更简洁。
八、Count 计数:统计符合条件的元素
使用场景
快速统计流中符合条件元素的数量。
代码示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream()
.filter(num -> num > 3)
.count();
System.out.println(count); // 输出:2
总结
Count 方法让统计操作更高效,无需手动遍历计数。
九、Reduce 归约:聚合数据的终极武器
使用场景
将流中的元素聚合为一个值,例如求和、拼接字符串等。
代码示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.reduce(0, Integer::sum);
System.out.println(sum); // 输出:15
总结
Reduce 方法让聚合操作更简洁,支持自定义初始值和累加逻辑。
十、flatMap:扁平化嵌套数据结构
使用场景
将多层嵌套的集合(如 List<List<>>)扁平化为单层集合。
代码示例
List<List<String>> nestedList = Arrays.asList(
Arrays.asList("A", "B"),
Arrays.asList("C", "D")
);
List<String> flatList = nestedList.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(flatList); // 输出:[A, B, C, D]
总结
flatMap 是处理嵌套数据结构的核心工具,让代码更简洁高效。
十一、Java 8 新特性的终极优势
-
代码更简洁:Lambda 表达式和流式 API 让代码行数减少,逻辑更清晰。
-
性能更高效:Stream API 支持并行处理,充分利用多核 CPU 资源。
-
可读性更强:链式调用让数据处理流程一目了然。
十二、关注我,解锁更多 Java 干货!
如果你觉得这篇内容有帮助,别忘了 点赞、在看、分享!我会持续分享 Java 核心技术、面试技巧和实战经验,助你成为更好的开发者!
也可以关注码农小灰,获取更多Java 核心技术