Java8使用Stream操作集合运算

前言

Srteam是Java 8提供的一个强有力的工具,可以让你以一种声明的方式处理数据。从而写出高效率,干净,简洁的代码。本文记录了使用Stream代替java集合的一些常用繁琐操作。

准备工作

集合初始化

List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

操作

获取指定长度字符串的数量

long count = 0;

//获取空字符串数量
count = strings.stream().filter(string -> string.isEmpty()).count();
System.out.println("空字符串数量为:" + count);

//获取字符串长度为3的数量
count = strings.stream().filter(string -> string.length() == 3).count();
System.out.println("字符串数量为3的数量为:" + count);

根据条件筛选字符串

//筛选非空字符串
List<String> filtered = strings.stream()
				.filter(string -> !string.isEmpty()).collect(Collectors.toList());
System.out.println("筛选后的列表: " + filtered);

根据条件合并字符串

//合并非空字符串,并用逗号间隔
String mergedString =  strings.stream().filter(string -> !string.isEmpty())
                .collect(Collectors.joining(","));
System.out.println("合并后的字符串: " + mergedString);

获取列表每个元素运算后的结果

//获取列表元素平方数
List<Integer> squaresList = numbers.stream().map(i -> (int)(Math.pow(i, 2.0)))
                .distinct().collect(Collectors.toList());
System.out.println("Squares List: " + squaresList);

统计集合

//获取集合统计数据
IntSummaryStatistics stats = integers.stream().mapToInt(x -> x).summaryStatistics();
System.out.println("列表中最大的数:" + stats.getMax());
System.out.println("列表中最小的数:" + stats.getMin());
System.out.println("所有数之和:" + stats.getSum());
System.out.println("平均数:" + stats.getAverage());

根据指定数量输出随机数

//输出10个随机数
Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);

参考资料
https://www.runoob.com/java/java8-streams.html

你可能感兴趣的:(Java,后端)