通过Java 8 Stream()强制map()

时间:2017-05-02 11:24:44

标签: java-8 java-stream

我对这种情况感到困惑:

  • 我有一个Producer,它会从一个下划线迭代器中产生一定数量的项目,可能还有很多。
  • 每个项目必须映射到不同的接口(例如,包装器,JSON结构中的JavaBean)。
  • 因此,我认为Producer返回流会很好,编写将Iterator转换为Stream的代码会更容易(使用SpliteratorsStreamSupport.stream()),然后应用Stream.map()并返回最后一个流。
  • 问题是我有一个调用者对结果流没有任何作用,例如,单元测试,但我仍然希望为每个项目调用映射代码。目前,我只是从调用者那里调用Stream.count()来强迫它。

问题是:

  • 我做错了吗?我应该使用不同的接口吗?请注意,我认为为next()/hasNext()实现Iterator非常麻烦,主要是因为它会强制您创建一个新类(即使它可以是匿名的)并保留指针并进行检查。对于集合视图也是如此,返回创建的集合而不是下划线迭代器上的动态视图是不可能的(输入数据集可能非常大)。我到目前为止唯一的选择是Java implementation of yield()。我也不希望在Producer中使用流(即forEach()),因为其他一些调用者可能希望它执行一些实际的操作。
  • 是否有更好的最佳做法来强制进行流处理?

0 个答案:

没有答案