相关疑难解决方法(0)

如何确保java8流中的处理顺序?

我想处理XMLjava对象中的列表.我必须确保按顺序处理所有元素.

因此sequential,stream我应该每次使用我吗? list.stream().sequential().filter().forEach()

或者只要我不使用并行性就足以使用流? list.stream().filter().forEach()

java java-8 java-stream

130
推荐指数
2
解决办法
7万
查看次数

Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

比方说,我有一个List<Integer> ints = new ArrayList<>();,我想将值添加到它,并使用比较并行执行的结果forEach()Collectors.toList().

首先,我将一些来自顺序IntStream和forEach的值添加到此列表中:

 IntStream.range(0,10).boxed().forEach(ints::add);
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果:

ints ==> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

现在我.clear()在列表中并行执行相同的操作:

IntStream.range(0,10).parallel().boxed().forEach(ints::add);
Run Code Online (Sandbox Code Playgroud)

现在由于多线程,我得到了错误的结果:

ints ==> [6, 5, 8, 9, 7, 2, 4, 3, 1, 0]
Run Code Online (Sandbox Code Playgroud)

现在我切换到收集相同的整数流:

IntStream.range(0,10).parallel().boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果:

ints ==> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

问题: 为什么两个并行执行产生不同的Collector结果?为什么产生正确的结果?

如果forEach产生随机结果,也Collector应该.我没有指定任何排序,我认为他在内部添加到我手动使用的列表forEach.由于他并行执行,因此他的add方法应该以未指定的顺序获取值.测试完成了JShell.

编辑:这里没有重复.我理解相关的问题.收集器为什么产生正确的结果?如果他将产生另一个随机结果,我不会问.

java parallel-processing java-8 java-stream

12
推荐指数
1
解决办法
439
查看次数

为什么 list.parallelStream().forEach() 不处理 Java 中列表中的所有元素?

以下代码在完成并行处理后并未将所有元素放入目标列表中。这有什么原因吗?

public static void main(String[] args) {

    List<Integer> source =new ArrayList<>();
    List<Integer> destination = new ArrayList<>();
    IntStream.range(0, 10000).forEach(element ->{
        source.add(element);
    });

    //System.out.println(source.size());

    source.parallelStream().forEach(c->{
        destination.add(c);
    });

    System.out.println("Source Size:"+source.size());
    System.out.println("destination size:"+destination.size());
}
Run Code Online (Sandbox Code Playgroud)

输出:源大小:10000 目标大小:4343

java parallel-processing java-stream

9
推荐指数
2
解决办法
3337
查看次数

如何在 Kotlin 中创建数据类单例?

假设我有一个数据类:

data class SensorData(val name: String, val temp : Double)
Run Code Online (Sandbox Code Playgroud)

SensorData我通过 REST 服务或内部 setter 方法创建此对象,但它name始终已填充并且temp可能为空。

此外,我需要通过几个类来获取这个 SensorData 对象,这就是我想到使用singleton.

显然我需要此处描述的object关键字,但是如何组合?data class object

singleton kotlin data-class

6
推荐指数
1
解决办法
8389
查看次数