Java 流的妙用

求数组的最大值、最小值、和... 等

在Java中,基本类型流只支持int、long、double三种类型.
一是可以通过IntSream.range方法创建
二是通过Arrays.stream( )中传入一个基本类型的数组进行创建

int[] nums = {1, 2, 3};
int max = Arrays.stream(nums).max().getAsInt();
int sum = Arrays.stream(nums).sum();
// 类似于python的reduce函数,提供一个二元运算符
int reduce = Arrays.stream(nums).reduce(1, (x, y) -> x * y);  // 6,所有数之积
int orelse = Arrays.stream(nums).reduce((x, y) -> x * y).orElse(0);

Arrays.stream(nums).max()返回的是一个Optinal<int>对象,因为流可能是空的,所以getAsInt方法可能会报错,因此Optinal<int>对象提供了一个orElse(int default)方法去处理这种情况。类似于python的max(nums, default=0)。而流是空的时候sum方法不会出现问题。

如果Optional装载的泛型类不是基本类型,那么就通过get方法去获得变量的值

列表筛选

List<String> ss = new ArrayList<String>(Arrays.asList("ab", "bb"));
ss = ss.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
List<Boolean> tt = ss.stream().map(String::isEmpty).collect(Collectors.toList());
ist<Integer> ll = ss.stream().map(String::length).collect(Collectors.toList());
// collect() 方法接受stream数据并转换类型
全部评论

相关推荐

野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务