南瓜慢说官方网站

  • 首页
  • 所有文章
  • 容器技术
  • SpringBoot-Cloud
  • 程序人生
  • 其它
  • 整理
  • 关于

  • 搜索
中间件 config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac 计划 Stream MongoDB Spring DevOps JVM String Map Set List 性能 Email Springboot 集合类 ArrayList Java
技术之前,先读诗书:

Java 8基本类型的Stream

发表于 2019-09-25 | 分类于 Java基础 | 0 | 阅读次数 212

Stream主要用于对象类型的集合,幸运的是,JDK还提供了基本类型的Stream,这让我们可以直接使用IntStream,而不是Stream<Integer>。

1 算术操作

我们经常会用求最小值、最大值、和、平均数等常用的操作,就以此为例开始吧:

int[] integers = new int[]{20, 98, 12, 7, 35};
int min = Arrays.stream(integers).min().getAsInt();

我们使用Arrays的stream()方法创建了一个int类型的stream,通过min()求出最小值(OptionalInt),最后通过getAsInt()返回int的值。

另一个创建IntStream的方法如下:

int max = IntStream.of(23, 32, 98, 1, 3).max().getAsInt();

同样,求和与平均数都是非常便利的:

 int sum = IntStream.of(3, 2, 1).sum(); 
 double avg = IntStream.of(73, 232, 232, 1).average().getAsDouble();

2 范围操作

我们可以基本范围来生成基本类型的Stream,这个在写Unit Tests的时候可真是太方便了。

int sum1 = IntStream.range(1, 10).sum();//return 45
int sum2 = IntStream.rangeClosed(1, 10).sum();//return 55

需要注意range()和rangeClosed()的区别,range()是exclusive最后一个值的,rangeClosed()是inclusive的。

遍历操作:

IntStream.rangeClosed(1, 5).forEach(System.out::println);

并行操作:

IntStream.rangeClosed(1, 5).parallel().forEach(System.out::println);

3 自动装箱和自动拆箱

有时我们需要将基本类型转化为对应的wrapper类型,就需要用到自动装箱操作:

List<Integer> evenInts = IntStream.rangeClosed(1, 10)
  .filter(num -> num % 2 == 0)
  .boxed()
  .collect(Collectors.toList());

同时,我们也可以将wrapper类型转化为基本类型:

sum = Arrays.asList(1,2,3,4).stream()
  .mapToInt( i -> i)
  .sum();

4 总结

即使我们比较少会用到基本类型的流,但当我们需要用的时候,它可以提高我们的效率。


欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

file

推荐阅读:
如何制定切实可行的计划并好好执行
容器技术(Docker-Kubernetes)
SpringBoot-Cloud相关
Https专题

  • 本文作者: 南瓜慢说
  • 本文链接: https://www.pkslow.com/archives/java8-primitive-streams
  • 版权声明: 本博客所有文章除特别声明外,不可转载!
# 中间件 # config # Go # Private # Kubernetes # pkslow # Test # HTTPS # Redis # Docker # Mac # 计划 # Stream # MongoDB # Spring # DevOps # JVM # String # Map # Set # List # 性能 # Email # Springboot # 集合类 # ArrayList # Java
中间件 config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac 计划 Stream MongoDB Spring DevOps JVM String Map Set List 性能 Email Springboot 集合类 ArrayList Java
Java 8 Streams的简单介绍与入门
Java 8之例说Stream的合并
  • 文章目录
  • 站点概览
南瓜慢说

南瓜慢说

多年Java开发,主要专注后端技术:Java/Spring/Springboot/微服务/大数据等。

多读书,多分享;多写作,多整理。

151 日志
7 分类
27 标签
RSS
0%
© 2020 — 2021 南瓜慢说 本站已挣扎运行:   粤ICP备20036375号