JDK8 stream操作记录

JDK8 stream一些操作是将函数作为对象传入。

Stream一些方法如map,接受以函数的形式传参:1.传入Lambda函数形式,类似只有一个接口的匿名内部类:(param1,param2)->{ 函数体},2.传入类似System.out::println形式其中println是静态方法,3.传入类似String::toUpperCase形式其中把遍历的是字符串,调用他们方法内的对象。

得到Stream方法:

Stream<String> stream = Stream.of("a", "b", "c", "d");
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(22);
list.add(23);
list.add(42);
Stream<Integer> stream = list.stream();

将Stream转换成集合类型。

coollect 方法作为终端操作,接受的是一个 Collector 接口参数,能对数据进行一些收集归总操作

List<Integer> list = Stream.of(1, 2, 3, 4).collect(Collectors.toList());
Set<Integer> set = Stream.of(1, 2, 3, 4).collect(Collectors.toSet());
Map<Integer, Integer> map = Stream.of(1, 2, 3, 4).collect(Collectors.toMap(i -> i - 1, i -> i));//两个匿名函数,简写形式,传入i返回i-1和i

他们支持两种类型的操作:中间操作(e.g. filter, map)和终端操作(如count, findFirst, forEach, reduce). 中间操作可以连接起来,将一个流转换为另一个流。这些操作不会消耗流,其目的是建立一个流水线。与此相反,终端操作会消耗类,产生一个最终结果。

List<Integer> list=new ArrayList<>();
list.add(2);
list.add(22);
list.add(23);
list.add(42);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println);
list.stream().filter(i->i>20).forEach(System.out::println);


Stream.of("a", "b", "c", "d").map(String::toUpperCase).forEach(System.out::println);
System.out.println(Stream.of(1, 2, 3, 4).reduce((item,next)->item+next).get());
System.out.println(Stream.of(1, 2, 3, 4).reduce(0,(item,next)->item+next));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值