10 个 Java Stream 顶级技巧,大量简化代码!
阅读本文大概需要 3.5 分钟。
来自:网络,侵删
var array = new int[]{1, 2, 3, 4, 5};
var sum = Arrays.stream(array)
.sum();
2. 避免嵌套流
var list1 = Arrays.asList("apple", "banana", "cherry");
var list2 = Arrays.asList("orange", "pineapple", "mango");
var result = Stream.concat(list1.stream(), list2.stream())
.filter(s -> s.length() > 5)
.collect(Collectors.toList());
3. 谨慎使用并行流
var list = Arrays.asList(1, 2, 3, 4, 5);
var sum = list.parallelStream().reduce(0, Integer::sum);
4. 使用惰性求值以获得更好的性能
var list = Arrays.asList(1, 2, 3, 4, 5);
var result = list.stream()
.filter(n -> n > 3)
.findFirst();
5.避免副作用
var list = Arrays.asList("apple", "banana", "cherry");
var count = 0;
list.stream()
.filter(s -> s.startsWith("a"))
.forEach(s -> count++);
6. 将流与不可变对象一起使用
var list = Arrays.asList("apple", "banana", "cherry");
var result = list.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
7. 在map()之前使用filter()以避免不必要的处理
var list = Arrays.asList(1, 2, 3, 4, 5);
var filteredList = list.stream()
.filter(i -> i % 2 == 0)
.map(i -> i * 2)
.collect(Collectors.toList());
8. 优先选择方法引用而不是 lambda 表达式
var list = Arrays.asList(1, 2, 3, 4, 5);
var sum = list.stream()
.reduce(0, Integer::sum);
9. 使用distinct()删除重复项
var list = Arrays.asList(1, 2, 3, 3, 4, 5, 5);
var distinctList = list.stream()
.distinct()
.collect(Collectors.toList());
10. 谨慎使用sorted()
var list = Arrays.asList( 3 , 2 , 1 );
var SortedList = list.stream()
.sorted()
.collect(Collectors.toList());
推荐阅读:
互联网初中高级大厂面试题(9个G) 内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper......等技术栈!
⬇戳阅读原文领取! 朕已阅