问题标签 [streamex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
847 浏览

java - 如何将 StreamEx 解包为“普通的旧 Java 流”?

StreamEx 是一个强大的库,但在某些时候我不再需要它的超能力了。

我怎样才能摆脱 StreamEx 内部开销?这会造成问题吗?

前任。

0 投票
1 回答
930 浏览

java - 向 Java 8 Stream 添加方法

在使用 Java 8 Stream时,我有时会发现Stream没有我想要的特定方法(例如takeWhile()dropWhile()skipLast())。如何在不重写整个 Java 8 Stream架构的情况下创建自己的具有附加方法的流类?

我知道StreamEx库并且知道它有takeWhile()dropWhile()。在撰写本文时,它没有skipLast(). 我已经为此方法提交了一个问题。

一个可接受的解决方案是展示如何扩展 Java 8 StreamStreamEx

0 投票
2 回答
902 浏览

java - 流分组按值

是否有非终端版本groupingBy或其他一些巧妙的方式通过生成的 Map 条目/值进行流式传输?

我发现自己想在之后流式传输这些值,groupingBy但我能想到的最好的结果并不漂亮:

0 投票
1 回答
2413 浏览

java - 如何在streamex中对映射流的双值求和?

StreamEx 库似乎真的可以帮助我简洁地编写 Java 8 流,尤其是在考虑映射时(mapKeyValue例如,使用 ,而不必手动拆箱映射条目)。

如果我在地图中有一个条目流,在 vanilla Java 8 中,我可以通过这种方式对这些值求和:

我也可以在 StreamEx 中做到这一点,但我希望在 StreamEx 中看到更好的方法,尽管我能想到的最好的方法是:

这是没有更好的。

我有没有更好的方法?

0 投票
2 回答
719 浏览

java - StreamEx.parallel().forEach() 在 .map() 之后不会并行运行

我注意到,如果我使用 StreamEx lib 将我的流与自定义 ForkJoinPool 并行输出,如下所示 - 后续操作确实在该池的并行线程中运行。但是,如果我添加一个 map() 操作并并行生成流 - 只使用池中的一个线程。

下面是演示此问题的最小工作示例的完整代码(没有所有导入)。executeAsParallelFromList() 和 executeAsParallelAfterMap() 方法之间的唯一区别是在 .parallel() 之前添加了 .map(...) 调用。

执行这两种方法的单元测试:

执行结果:

如您所见,执行 executeAsParallelFromList() 时使用了所有三个线程,但执行 executeAsParallelAfterMap() 时只使用了一个线程。

为什么?

谢谢!

码头

注意:这个例子是故意简单化的——我试图让它尽可能少地演示这个问题。显然,在现实生活中,map()、handleItem() 等还有很多事情要做,而且输入数据更有趣(我正在尝试并行处理 AWS S3 存储桶/前缀)。

0 投票
1 回答
117 浏览

java - AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释

考虑以下示例代码。此代码使用 Eclipse@NonNull@Nullable注释来检查nulls。不幸的是,Eclipse 在行上标记了一个错误map(toNonNull)

这是错误消息:

Null 类型不匹配(类型注释):需要“Function”,但此表达式的类型为“Function<@NonNull Integer, @NonNull Integer>”

我想在StreamExnonNull()(或更准确地说AbstractStreamEx)上创建一个 Eclipse 外部注释,nonNull()以便 Eclipse 知道流中的值不能为空。

这是 Eclipse 外部注释的开始。

我放???什么?

0 投票
1 回答
886 浏览

java - 使用 SimpleEntry 和 StreamEx 创建地图

我看到了一个 StreamEx 的例子,它非常好,就像这样

这很好用,我的输出{seconds=1, minutes=1}没问题。不完美,因为我必须稍后转换数字。

我试图优化SimpleEntry<String,Integer>

可以编译,但现在我遇到了问题,一些值被多次放入地图中,这会导致Exception in thread "main" java.lang.IllegalStateException: Duplicate key minutes

我怎样才能解决这个问题?

编辑

愚蠢的错误:我忘了在第二个例子中切换 s1 和 s2

0 投票
1 回答
134 浏览

java-8 - 使用 takeWhile 时 StreamEx 并行性是否有效?

我有一个这样创建的流:

我可以通过添加以下内容将其更改为并行工作parallel

但我还想添加一个takeWhile条件来使流停止:

但是,一旦我添加了takeWhile流,似乎就变成了顺序的(至少它只由一个线程处理)。根据javadoctakeWhile如果我理解正确,应该使用并行流。我做错了什么还是根据设计?

0 投票
4 回答
522 浏览

java - StreamEx 分组到列表中返回的记录数不正确

以下代码将对象流拆分为 1000 个块,在物化时处理它们并在最后返回对象总数。

在所有情况下,返回的数字都是正确的,除非流大小恰好为 1。在流大小为 1 的情况下,返回的数字为 0。

任何帮助将不胜感激。如果流中没有记录为 0,我还必须破解返回调用。我也想解决这个问题。

0 投票
2 回答
468 浏览

java - Remove empty Optionals from Stream using StreamEx

I'm searching for an elegant way to stream only non-empty Optional entries using the StreamEx library. Or the standard library, if it's possible.

Currently I'm using the following, rather verbose, approach:

I'm essentially looking for something like StreamEx's nonNull method, but for Optional.