前言
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);