引流软件_对象和索引流

引流软件

引流软件

我本来要写一篇关于如何将流与每个元素的索引混合在一起的文章,但是Baeldung上的人们已经很好地涵盖了这个主题! 鉴于我是他们的编辑团队的一员,我为他们/我们感到自豪。

有趣的是,特别是Streams中的Java函数式编程如何使我们脱离了一些常见的模式。 例:

List<Foo> foos = new ArrayList<>();
for (int i=0; i < bars.size(); i++) {
    foos.add(new Foo(i, bars.get(i));
}

上面的代码从索引创建一个新的Foo ,从源列表创建一个bar

Stream.collect是一个更大的信号表明我们要从迭代中提取数据时,我们不喜欢在for循环中间使用add 。 同样,当我们可以在流声明中更明确地表示有效的Stream.map时,我们不希望将其隐藏在循环内。 我们都知道以上内容应读为:

List<Foo> foos = bars.stream()
   .map( ... something ...)
   .collect(toList());

尴尬的挑战是某些事情不容易完成。

如何选择做什么

总体而言,围绕流操作编写复杂的功能清单是一种隐藏流旨在向我们展示的东西的方法,即,数据如何从一个地方到达另一个地方。

所以这是一些想法:

  • 也许只有一个for循环–可能会更容易
  • 如果您发现操作主体中的主要参与者是索引,那么请进行一系列索引,并在最后一分钟将对象与List.get混合,假设您的列表已被有效索引
  • 如果主要玩家是一个对象,则可以存储一个计数器( AtomicInteger是一个不错的选择)并在最后一刻增加它,注意排序和并行流
  • 如果代码变得复杂,请尝试通过提取函数将流逻辑与业务逻辑分离
  • 也许将其委托给一个图书馆-Baeldung的文章展示了ProtonPack和其他可能更好的东西,它们已经过测试和记录。

无论您做什么,都不要从原则上使自己变得困难。

翻译自: https://www.javacodegeeks.com/2019/08/object-index-streams.html

引流软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值