小编Ján*_*čan的帖子

并行流与串行流

并行流可能会产生与Java 8中的串行流不同的结果吗?根据我的信息,并行流与串行流相同,除了分成多个子流.这是一个速度问题.完成对元素的所有操作,并在最后组合子流的结果.最后,在我看来,对于并行和串行流,操作的结果应该是相同的.所以我的问题是,这段代码可能会给我一个不同的结果吗?如果有可能,为什么会发生?

int[] i = {1, 2, 5, 10, 9, 7, 25, 24, 26, 34, 21, 23, 23, 25, 27, 852, 654, 25, 58};
Double serial = Arrays.stream(i).filter(si -> {
    return si > 5;
}).mapToDouble(Double::new).map(NewClass::add).reduce(Math::atan2).getAsDouble();

Double parallel = Arrays.stream(i).filter(si -> {
    return si > 5;
}).parallel().mapToDouble(Double::new).map(NewClass::add).reduce(Math::atan2).getAsDouble();

System.out.println("serial: " + serial);
System.out.println("parallel: " + parallel);
Run Code Online (Sandbox Code Playgroud)
public static double add(double i) {
    return i + 0.005;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

serial: 3.6971567726175894E-23

parallel: 0.779264049587662
Run Code Online (Sandbox Code Playgroud)

java parallel-processing lambda java-8 java-stream

17
推荐指数
1
解决办法
1853
查看次数

JAVA - 指数分布

我需要找到概率指数分布的公式,但我不知道如何找到它:(这个公式必须具有强大的统计属性(它不能丢弃随机的任何结果,以保持随机实例的不受限制的搜索)

我试图找到公式,这将在这样的方法中工作:

rand.getNextDuobleExpDistrib();
Run Code Online (Sandbox Code Playgroud)

我现在有这个代码,但根据"输入分析器",它无法正常工作

public double getNext() {
        return -lampda * Math.log(rand.nextDouble());
 }
Run Code Online (Sandbox Code Playgroud)

java random math exponential

4
推荐指数
1
解决办法
1万
查看次数

可以在javaFx中为Node对象添加css类吗?

我想制作一个带有可拖动节点的窗格.当我选择一些节点时,我想为这个节点绘制一些边框.实际上,我已经完成了,但我的麻烦是,我的解决方案从Node中删除了所有其他样式.这是非常难看的解决方案.我想通过添加css类来实现它,但我绝对不知道该怎么做.当节点的焦点丢失时,我想删除css类.我是JavaFx的新手.我的代码如下:

public void addSelectionControlToNode(Node node) {
node.addEventFilter(MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> {
    if (e.isControlDown()) {
        if (selection.contains(node)) {
            selection.remove(node);
        } else {
            selection.add(node);
            //problematic area below
            node.setStyle("-fx-border-width: 2;
               -fx-border-color: gray; -fx-border-style: solid;");
           //problematic area end
        }
    } else {
        selection.clear();
        selection.add(node);
    }
    System.out.println(selection.size());
});
Run Code Online (Sandbox Code Playgroud)

}

在此输入图像描述

我已经看过很多教程如何在javaFx中使用css,但我不明白如何解决我的问题.

css java javafx

4
推荐指数
1
解决办法
1万
查看次数

将布尔值转换为双精度值的快速方法

我需要在java中将double转换为boolean。它在我的应用程序中经常发生,它对应用程序的性能具有至关重要的影响。有什么方法可以重写此方法以使其更快?我需要使用双精度数进行操作,因为精度是必要的,但我不保存双精度数,而是只保存布尔值(当数据只能为 0 或 1 时)。代码在这里:

    public static double booleanToDouble(boolean b) {
        if (b) {
            return 1;
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,这不是 XY 问题。50 000 000 行数据的整个应用程序运行需要 3 秒。通过这种转换,时间大约会增加到 5 秒。所以这个转换需要两秒钟,几乎是整个应用程序运行的一半。

java double casting boolean

-1
推荐指数
1
解决办法
2692
查看次数