1、匿名类替换
//Before Java 8:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Before Java8 ");
}
}).start();
//Java 8 way:
new Thread( () -> System.out.println("In Java8!") ).start();
2、list集合遍历
List features = Arrays.asList("Lambdas", "Default Method", "Stream API",
"Date and Time API");
features.forEach(n -> System.out.println(n));
3、简单流式计算Collection操作
List<String> filtered = strList.stream().filter(x -> x.length()> 2)
.collect(Collectors.toList());
System.out.printf("Original List : %s, filtered list : %s %n",
strList, filtered);
Output :
Original List : [abc, , bcd, , defg, jk], filtered list : [abc, bcd, defg]
List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany",
"Italy", "U.K.","Canada");
String G7Countries = G7.stream().map(x -> x.toUpperCase())
.collect(Collectors.joining(", "));
System.out.println(G7Countries);
Output :
USA, JAPAN, FRANCE, GERMANY, ITALY, U.K., CANADA
4、简单流式计算distinct()操作
List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);
List<Integer> distinct = numbers.stream().map( i -> i*i).distinct()
.collect(Collectors.toList());
System.out.printf("Original List : %s, Square Without duplicates :
%s %n", numbers, distinct);
Output :
Original List : [9, 10, 3, 4, 7, 3, 4], Square Without
duplicates : [81, 100, 9, 16, 49]
5、计算List中的元素的最大值,最小值,总和及平均值
List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x)
.summaryStatistics();
System.out.println("Highest prime number in List : " + stats.getMax());
System.out.println("Lowest prime number in List : " + stats.getMin());
System.out.println("Sum of all prime numbers : " + stats.getSum());
System.out.println("Average of all prime numbers : " + stats.getAverage());
Output :
Highest prime number in List : 29
Lowest prime number in List : 2
Sum of all prime numbers : 129
Average of all prime numbers : 12.9
以上参考文章:https://www.cnblogs.com/zlw-xf/p/11051583.html
实际应用操作
1、list对象集合查询是否存在重复主键并筛选出来
// 学员编号重复计数情况
Map<Object, Long> collectCount = diaExamsInfosPoArrayList.stream().collect(
Collectors.groupingBy(DiaExamsInfosPo::getStuNumber, Collectors.counting()));
// 筛选重复大于1的信息值
List<Map<String, Long>> collectResult = collectCount.keySet().stream().
filter(key -> collectCount.get(key) > 1).map(key -> {
Map<String, Long> map = new HashMap<>();
map.put((String) key, collectCount.get(key));
return map;
}).collect(Collectors.toList());
2、list集合根据条件筛选成两个集合
//创建集合 Set类似
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
//使用stream流进行分组
Map<Boolean, List<Integer>> preAvg = list.stream()
.collect(Collectors.groupingBy(x -> x < 2 || x > 4));
List<Integer> tr = preAvg.get(true);
List<Integer> fa = preAvg.get(false);
System.out.println("true" + tr);
System.out.println("false" + fa);
3、list集合将对象按照某个字段排序
// 升序
list = campusQueryVoList.stream()
.sorted(Comparator.comparing(CampusQueryVo::getRankNumber))
.collect(Collectors.toList());
除此还包含其他操作,整体操作语法类似于scala语言
具体实现原理可参考
https://blog.csdn.net/weixin_32280593/article/details/114881549