问题标签 [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.
java - 如何将 StreamEx 解包为“普通的旧 Java 流”?
StreamEx 是一个强大的库,但在某些时候我不再需要它的超能力了。
我怎样才能摆脱 StreamEx 内部开销?这会造成问题吗?
前任。
java - 向 Java 8 Stream 添加方法
在使用 Java 8 Stream时,我有时会发现Stream没有我想要的特定方法(例如takeWhile()、dropWhile()、skipLast()
)。如何在不重写整个 Java 8 Stream架构的情况下创建自己的具有附加方法的流类?
我知道StreamEx库并且知道它有takeWhile()和dropWhile()。在撰写本文时,它没有skipLast()
. 我已经为此方法提交了一个问题。
java - 流分组按值
是否有非终端版本groupingBy
或其他一些巧妙的方式通过生成的 Map 条目/值进行流式传输?
我发现自己想在之后流式传输这些值,groupingBy
但我能想到的最好的结果并不漂亮:
java - 如何在streamex中对映射流的双值求和?
StreamEx 库似乎真的可以帮助我简洁地编写 Java 8 流,尤其是在考虑映射时(mapKeyValue
例如,使用 ,而不必手动拆箱映射条目)。
如果我在地图中有一个条目流,在 vanilla Java 8 中,我可以通过这种方式对这些值求和:
我也可以在 StreamEx 中做到这一点,但我希望在 StreamEx 中看到更好的方法,尽管我能想到的最好的方法是:
这是没有更好的。
我有没有更好的方法?
java - StreamEx.parallel().forEach() 在 .map() 之后不会并行运行
我注意到,如果我使用 StreamEx lib 将我的流与自定义 ForkJoinPool 并行输出,如下所示 - 后续操作确实在该池的并行线程中运行。但是,如果我添加一个 map() 操作并并行生成流 - 只使用池中的一个线程。
下面是演示此问题的最小工作示例的完整代码(没有所有导入)。executeAsParallelFromList() 和 executeAsParallelAfterMap() 方法之间的唯一区别是在 .parallel() 之前添加了 .map(...) 调用。
执行这两种方法的单元测试:
执行结果:
如您所见,执行 executeAsParallelFromList() 时使用了所有三个线程,但执行 executeAsParallelAfterMap() 时只使用了一个线程。
为什么?
谢谢!
码头
注意:这个例子是故意简单化的——我试图让它尽可能少地演示这个问题。显然,在现实生活中,map()、handleItem() 等还有很多事情要做,而且输入数据更有趣(我正在尝试并行处理 AWS S3 存储桶/前缀)。
java - AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释
考虑以下示例代码。此代码使用 Eclipse@NonNull
和@Nullable
注释来检查null
s。不幸的是,Eclipse 在行上标记了一个错误map(toNonNull)
。
这是错误消息:
Null 类型不匹配(类型注释):需要“Function”,但此表达式的类型为“Function<@NonNull Integer, @NonNull Integer>”
我想在StreamExnonNull()
(或更准确地说AbstractStreamEx)上创建一个 Eclipse 外部注释,nonNull()
以便 Eclipse 知道流中的值不能为空。
这是 Eclipse 外部注释的开始。
我放???
什么?
java - 使用 SimpleEntry 和 StreamEx 创建地图
我看到了一个 StreamEx 的例子,它非常好,就像这样
这很好用,我的输出{seconds=1, minutes=1}
没问题。不完美,因为我必须稍后转换数字。
我试图优化SimpleEntry<String,Integer>
:
可以编译,但现在我遇到了问题,一些值被多次放入地图中,这会导致Exception in thread "main" java.lang.IllegalStateException: Duplicate key minutes
我怎样才能解决这个问题?
编辑
愚蠢的错误:我忘了在第二个例子中切换 s1 和 s2
java-8 - 使用 takeWhile 时 StreamEx 并行性是否有效?
我有一个这样创建的流:
我可以通过添加以下内容将其更改为并行工作parallel
:
但我还想添加一个takeWhile
条件来使流停止:
但是,一旦我添加了takeWhile
流,似乎就变成了顺序的(至少它只由一个线程处理)。根据javadoc,takeWhile
如果我理解正确,应该使用并行流。我做错了什么还是根据设计?
java - StreamEx 分组到列表中返回的记录数不正确
以下代码将对象流拆分为 1000 个块,在物化时处理它们并在最后返回对象总数。
在所有情况下,返回的数字都是正确的,除非流大小恰好为 1。在流大小为 1 的情况下,返回的数字为 0。
任何帮助将不胜感激。如果流中没有记录为 0,我还必须破解返回调用。我也想解决这个问题。
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
.