c语言sscanf函数的用法是什么
241
2022-12-12
Java关于JDK1.8新特性的Stream流
目录java 的Stream流一、定义二、操作的特征三、代码示例1、生成流2、forEach 迭代3、limit方法用于获取指定数量的流4、map5、sorted6、并行(parallel)程序7、Collectors8、转化(将枚举类转成map)
Java 的Stream流
一、定义
JDK1.8 中增加了Stream流,Stream流是一个来自数据源的元素队列并支持聚合操作。元素是特定类型的对象,形成一个队列,Java中的Stream并不会存储元素,而是按需计算数据源是流的来源,可以使集合,数组,I/O channel,生成器generator等。聚合操作类似SQL语句一样的操作,比如filter,map,reduce,match,sorted等
二、操作的特征
中间的操作都会返回流对象本身,这样多个操作可以串联成一个管道,如同流式风格
内部迭代:以前对集合的遍历是通过Iterator或者For-Each的方式,显式的在集合外部进行迭代,这叫做外部迭代,而Stream流式内部迭代。
三、代码示例
1、生成流
如下代码的意思是,首先创建一个集合,然后过滤出所有不为空的元素,重新组成一个集合
List
List
System.out.println("*********过滤后的集合是"+strings);
2、forEach 迭代
strings.forEach(System.out::println);
3、limit方法用于获取指定数量的流
如下就是获取一个长度为10的流。
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);
4、map
map方法用于映射每个元素,以下代码片段使用map输出元素对应的平方数
vList
//获取对应的平方数
List
System.out.println("*********获取对应的平方数"+integers);
5、sorted
sorted方法用于对流进行排序
如下,就是按照元素的大小进行排序
List
List
System.out.println("*********排序后集合是"+sortedList);
6、并行(parallel)程序
List
//获取空字符串的数量
long count = emptyList.parallelStream().filter(string -> string.isEmpty()).count();
System.out.println("*****集合中的空字符串个数=" + count);
7、Collectors
Collectors类实现了很多归约操作,例如将流转换成集合和集合元素,Collectors可用于返回列表或字符串
List
List
.collect(Collectors.toList());
System.out.println("筛选列表:" + filtered);
String mergedString = stringList.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(","));
System.out.println("合并字符串:" + mergedString);
统计
//统计
List
IntSummaryStatistics statistics = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表MOVQg中最大的数:" + statistics.getMax());
System.out.println("列表中最小的数:" + statistics.getMin());
System.out.println("所有数之和:" + statistics.getSum());
System.out.println("平均数:" + statistics.getAverage());
8、转化(将枚举类转成map)
将一个枚举类转成一个map,使用的示例可以参考下方:
Map
完整的代码是:
public enum DisableFlagEnum {
NORMAL(0, "正常"),
DELETE(1, "已删除");
private Integer code;
private String desc;
DisableFlagEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static String getDesc(Integer code) {
Map
return disableFlagMap.get(code);
}
}
demo的运行结果:
总结:
本文首先介绍了JDK1.8中的Stream流,Stream流是是一个来自数据源的元素队列并支持聚合操作。它的特点就是中间过程不会存储数据,不会改变数据源本身。接着介绍了stream的使用示例,stream流的使用一般是要结合函数式接口使用的。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~