Java 8 Stream
package com.lambda;
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
/**
Stream
* @author qjw
* @version V1.0
* @since 2021-12-02 09:14:00
*/
public class Practice {
public static void main(String[] args) {
//建立一个数组1, 23, 4, 4, 22, 34, 45, 11, 33使用 lambda 求出数组中的最小数将数组去重,
// 并将去重后数组的每个元素乘以 2,再求出乘以 2 后的数组的和,比如数组1,2,3,3,去重后为1,2,3,乘以 2 后为2,4,6,最后的和为12。
int[] arr =new int[]{1, 23, 4, 4, 22, 34, 45, 11, 33};
System.out.println("最小值:"+ Arrays.stream(arr).min());
System.out.println("数组去重*2求和:"+Arrays.stream(arr).distinct().map((i)->i*2).sum());
Arrays.stream(arr).sorted().forEach(System.out::println);
//Stream 提供了新的方法 'forEach' 来迭代流中的每个数据
Random random=new Random();
random.ints().limit(10).forEach(System.out::println);
//filter 方法用于通过设置的条件过滤出元素
List<String> strings=Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
System.out.println("原list:"+strings);
List<String> filtered = strings.stream().filter(String -> !String.isEmpty()).collect(Collectors.toList());
long count = strings.parallelStream().filter(String -> !String.isEmpty()).count();
String mergedString = strings.stream().filter(String -> String.isEmpty()).collect(Collectors.joining(","));
List<String> collect = strings.stream().filter(String -> String.length() == 3).collect(Collectors.toList());
System.out.println("长度为3的字符串:"+collect);
System.out.println("过滤后串行list:"+filtered);
System.out.println("过滤后list长度:"+count);
System.out.println("合并字符串:"+mergedString);
//map 方法用于映射每个元素到对应的结果 求平方
List<Integer> numbers=Arrays.asList(3, 2, 2, 3, 7, 3, 5);
System.out.println("原list:"+numbers);
List<Integer> integerList = numbers.stream().map(i -> i * i).collect(Collectors.toList());
System.out.println("平方后list:"+integerList);
//另外,一些产生统计结果的收集器也非常有用。它们主要用于int、double、long等基本类型上,它们可以用来产生类似如下的统计结果。
IntSummaryStatistics statistics = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("最大数:"+statistics.getMax());
System.out.println("最小数:"+statistics.getMin());
System.out.println("之和:"+statistics.getSum());
System.out.println("平均数:"+statistics.getAverage());
//sorted 方法用于对流进行排序
random.ints().limit(10).sorted().forEach(System.out::println);
}
}
结果:
最小值:OptionalInt[1]
数组去重*2求和:346
1
4
4
11
22
23
33
34
45
1913447005
87408902
-737480927
-958413226
-839326373
-1914034805
-417534561
-104999651
2008638734
-2087729471
原list:[abc, , bc, efg, abcd, , jkl]
长度为3的字符串:[abc, efg, jkl]
过滤后串行list:[abc, bc, efg, abcd, jkl]
过滤后list长度:5
合并字符串:,
原list:[3, 2, 2, 3, 7, 3, 5]
平方后list:[9, 4, 4, 9, 49, 9, 25]
最大数:7
最小数:2
之和:25
平均数:3.5714285714285716
-1718478674
-229033118
165204701
281266492
937092126
1071271851
1123267459
1508069104
1598363878
1621817844

浙公网安备 33010602011771号