Java Stream 流的使用

Java Stream 流的使用

在实际生产中,几乎很少使用for循环的结构进行操作,Java 8 提供的Stream可以大大提高程序员的生产力,由于自己之前对于Stream 流使用的并不是很熟练,所以在这里进行简单的总结归纳。

最后熟练的使用Stream流,不仅仅是对基础的熟悉,还是需要对于业务的一些理解需要比较深刻。

一、Stream 流的介绍

Stream流是类似于SQL语句,可以通过一种比较直观的方式对java的集合进行运算。

Stream 流,就是将要处理的元素看作是一种流,这个流在管道中运输,我们可以在管道中对管道中的节点进行处理,比如 筛选、排序、聚合 等等。

可以通过以下图,了解流的使用:

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

Stream流有以下特点:

  • 元素是特定类型的对象,形成一个队列。Java的Stream流不会存储元素,而是按需计算。
  • Stream数据流的来源,可以是集合、数组,I/O,产生器等等。
  • 聚合操作包括filter, map, reduce, find, match, sorted等等。

生成流

  • stream() 为集合创建串行流;目前基本都是串行流
  • parallelStream() 为集合创建并行流

二、使用方式介绍

forEach

forEach可以迭代流中的每个元素。

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

map

map用于映射每个元素对应的结果。

List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
// 获取对应的平方数
List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

filter

filter可以设置过滤条件。

List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"
团队液体查看器(叉) 这是原始Team Liquid Streams扩展的分支,因为旧的开发人员没有维护/改进现有的扩展。 请在下面的评论部分或以下主题的线程中提出功能请求:http://www.teamliquid.net/forum/viewmessage.php?topic_id=205002 Team Liquid Streams提供了一种在TeamLiquid上观看与Starcraft相关的的简便方法.net它会保持最新列表,列出当前正在媒体的人以及正在观看该媒体的观众人数。 您还可以收藏要在每次再次开始广播时引起弹出式通知的光。 您可以按收藏夹,视频名称,是否推荐,视频类型,种族和观众数进行排序。 现在,该扩展名还按用户名而不是所有者列出,与TeamLiquid.net上的外观匹配。此外,现在还有一个选项屏幕,用于手动编辑您的收藏夹和隐藏列。 更新:现在启用了类型过滤。0.0.2.0版:现在启用了竞赛过滤。0.0.2.5版:添加了一次手动刷新。 刷新是每10分钟一次,此外每10分钟会发生一次自动刷新。 0.0.2.6版:修复了没有种族选择的不会显示的错误。 0.0.2.7版:修复了导致隐藏列时列无法正确移动的错误。 -由Bone_Idle版本0.0.2.8报告:修复了由于标签更改而导致“杂项”不再显示的错误。版本0.0.2.9:添加了“语言等级”列。 默认情况下不显示,并显示所有三种评级类型。 0.0.3.0版:已更新以添加新类型(Dota2和LoL)。 选项页面应该可以再次正常工作。 0.0.3.1版:在选择过滤类型时,类型选择下拉列表保存用于节制的过滤器选择。0.0.3.4版:D3更新0.0.4.0版:HotS和WoL更新用户请求的通知警报现在在选项菜单0.0.4.1版中切换: HotS和WoL的更新-> SC2 Chrome版本0.0.5.0的更新清单版本:输入EoL,因为我目前没有时间维护此版本,并且Google的新Chrome req需要大量重写。 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值