小编pio*_*rek的帖子

在Java 8中,顺序和有序流保证按顺序执行操作吗?

是否有一个操作的任何保证连续有序流的处理,遭遇订单

我的意思是,如果我有这样的代码:

IntStream.range(0, 5)
        .map(i -> {
            myFunction(i);
            return i * 2;
         })
         .boxed()
         .collect(toList());
Run Code Online (Sandbox Code Playgroud)

是否有保证,它将以生成范围的遭遇顺序执行myFunction()调用?

我找到了Stream类的JavaDocs草案,明确说明了这一点:

对于顺序流管道,如果管道源具有已定义的遭遇顺序,则所有操作都以管道源的遭遇顺序执行.

但在官方JavaDocs中,这一行被删除了.它现在仅讨论所选方法的遭遇顺序.该包装java.util.stream文档副作用款规定:

即使管道被约束以产生与流源的遭遇顺序一致的结果(例如,IntStream.range(0,5).parallel().map(x -> x*2).toArray()必须产生[0, 2, 4, 6, 8]),也不保证将映射器函数应用于各个元素的顺序,或者什么线程为给定元素执行任何行为参数.

但它没有说明顺序流,而且这个例子是针对并行流的(我的理解是顺序流和并行流都是如此,但这是我不确定的部分).

另一方面,它也在订购部分说明:

如果订购了流,则大多数操作都被约束为对其遭遇顺序中的元素进行操作; 如果流的源是List包含的[1, 2, 3],那么执行的结果map(x -> x*2)必须是[2, 4, 6].但是,如果源没有定义的遭遇顺序,则值的任何排列[2, 4, 6]都将是有效结果.

但这一次它以"对元素进行操作"开始,但是示例是关于产生的流,所以我不确定它们是否会考虑副作用,副作用实际上就是这个问题.

java java-stream

11
推荐指数
1
解决办法
1088
查看次数

绘制具有不同采样率的两个函数

我想绘制两个函数:sin(x)和一个采样和量化的sin(x).脚本很简单

set xtic 1
set ytic 1
f1(x) = sin(x/16*2*pi)*8
round(x) = x - floor(x) < 0.5 ? floor(x) : ceil(x)
plot [0:16] [-8.5:8.5] f1(x) with lines,  round(f1(x)) with steps lt 2
Run Code Online (Sandbox Code Playgroud)

问题是,我希望sin(x)是平滑的,采样的量化sin(x)以1的间隔采样.问题是,我找不到任何选项.添加

set sample 21
Run Code Online (Sandbox Code Playgroud)

几乎可以工作,但罪(x)看起来不够平滑.有没有办法让它变得更好?

gnuplot

5
推荐指数
1
解决办法
9894
查看次数

标签 统计

gnuplot ×1

java ×1

java-stream ×1