【发布时间】:2017-12-13 20:58:36
【问题描述】:
我有一个具体的问题。有一些类似的问题,但这些问题要么是 Python 的,而不是 Java 的,或者即使问题听起来相似,要求也不同。
我有一个值列表。
List1 = {10, -2, 23, 5, -11, 287, 5, -99}
归根结底,我想根据列表的值拆分列表。我的意思是如果该值大于零,它将保留在原始列表中,并且负值列表中的相应索引将设置为零。如果值小于零,则进入负值列表,将原列表中的负值替换为零。
结果列表应该是这样的;
List1 = {10, 0, 23, 5, 0, 287, 5, 0}
List2 = {0, -2, 0, 0, -11, 0, 0, -99}
有没有办法用 Java 中的 Stream api 解决这个问题?
【问题讨论】:
-
您可以使用
map操作将它们分别映射到Math.max(0, n)和Math.min(0, n)。 -
流需要两次迭代。最好使用单个老式循环。
-
@jsheeran 我也想到了 Map,但在我的情况下,这个操作将在 for 循环中执行,并且迭代次数将在运行时决定。我更喜欢少操作。
标签: java java-stream