java stream

本文介绍了Java8的Stream API,展示了如何生成流、使用filter、map和sorted等操作进行数据处理。例如,通过filter过滤元素,map进行映射转换,sorted实现排序。这些操作让代码更简洁、声明式。示例代码演示了如何统计数组中不为1的元素个数,以及如何对元素平方后去重并排序。
摘要由CSDN通过智能技术生成

java stream

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。stream将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。

+--------------------+       +------+   +------+   +---+   +-------+
| stream of elements +-----> |filter+-> |sorted+-> |map+-> |collect|
+--------------------+       +------+   +------+   +---+   +-------+

生成流

 //直接生成
 Stream stream = Stream.of(1,2,3,4);
 // 使用Arrays.stream
 int intArray[]={1,2,3,4};
 IntStream intStream =Arrays.stream(intArray);
 // 使用Collections
 List<int[]> list = Arrays.asList(a);
 stream = list.stream();

其中IntStream是Stream的包装类型,也可以使用Stream< Integer >,同理还有LongStream、DoubleStream。

流操作

生成流之后就可以对流进行操作。

filter

filter 方法用于通过设置的条件过滤出元素。以下代码片段使用 filter 方法过滤掉1:

int a[]={7,1,8};
//count的返回值的long类型,因此要加一个强制类型转换(int)
//计算a中不为1的个数
int res=(int)Arrays.stream(a).filter(x -> x!=1).count();
System.out.println(res);

输出为2

map

map 方法用于映射每个元素到对应的结果,以下代码片段使用 map 输出了元素对应的平方数:

List<Integer> numbers = Arrays.asList(7,7,1,8);
List<Integer> res= numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

distinct()的作用是去除重复值,因此res的值为[49,1,64]

sorted

sorted 方法用于对流进行排序。

List<Integer> numbers = Arrays.asList(7,7,1,8);
List<Integer> res= numbers.stream().map( i -> i*i).distinct().sorted().collect(Collectors.toList());

res的值为[1,49,64]

更多示例参看菜鸟教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值