@Test
public void test7() {
List<String> stringList = Stream.concat(Arrays.asList("a", "b", "c").stream(), Arrays.asList("e", "d", "a", "x", "h", "l", "j", "g").stream())
//去重
.distinct()
//过滤
.filter(i -> i != "c")
//将元素进行映射转换
.map(String::toUpperCase)
//将每一个元素映射成一个流,做完操作再把每个流连接成一个流
.flatMap(i -> Stream.of(i + "1"))
//生成一个相同的Stream,并提供一个消费函数,当新Stream中的元素被消费(执行操作)时,该消费函数会在此之前先执行
.peek(i -> System.out.println("i==" + i + 1))
//跳过前N个元素,取剩余元素,没有则为空
.skip(1)
//排序
.sorted()
//返回前N个元素
.limit(7)
//收集方法,把流转换为集合和聚合元素
.collect(Collectors.toList());
//输出
stringList.forEach(System.out::println);
stringList.stream().forEach(System.out::println);
//返回最大的Optional对象
Optional<String> maxStringOptional = stringList.stream().max(Comparator.comparing(c -> c));
String max = maxStringOptional.get();
System.out.println("max = " + max);
//反会最小的Optional对象
Optional<String> minStringOptional = stringList.stream().min(Comparator.comparing(c -> c));
String min = minStringOptional.get();
System.out.println("min = " + min);
//根据指定规则从流中生成一个指定的值
Optional<String> reduce = stringList.stream().reduce(String::join);
System.out.println("reduce.get() = " + reduce.get());
//所有元素都满足指定条件则返回true 否则返回false
boolean b = stringList.stream().allMatch(i -> i == "B1");
System.out.println("所有元素都满足条件? b = " + b);//false
//所有元素都不满足指定条件则返回true 否则返回false
boolean b2 = stringList.stream().noneMatch(i -> i == "Z1");
System.out.println("所有元素都不满足条件? b2 = " + b2);//true
//至少有一个元素满足指定条件则返回true 否则返回false
boolean b3 = stringList.stream().peek(System.out::println).anyMatch(i -> i == "B1");
System.out.println("至少有一个元素满足条件? b3 = " + b3);//没搞懂 与预计结果不符
//获取第一个元素
Optional<String> first = stringList.stream().findFirst();
String firstString = first.get();
System.out.println("获取第一个元素 = " + firstString);
//通过summaryStatistics方法统计stream的信息
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
LongSummaryStatistics longSummaryStatistics = integerList.stream().mapToLong((i) -> i).summaryStatistics();
System.out.println("平均值" + longSummaryStatistics.getAverage());
System.out.println("个数" + longSummaryStatistics.getCount());
System.out.println("最大值" + longSummaryStatistics.getMax());
System.out.println("最小值" + longSummaryStatistics.getMin());
System.out.println("和" + longSummaryStatistics.getSum());
}
stream流的一些操作
最新推荐文章于 2023-04-01 20:25:34 发布