小编Cla*_*iga的帖子

并行流的行为与Stream不同

我无法理解为什么并行流和流为完全相同的语句提供不同的结果.

    List<String> list = Arrays.asList("1", "2", "3");
    String resultParallel = list.parallelStream().collect(StringBuilder::new,
            (response, element) -> response.append(" ").append(element),
            (response1, response2) -> response1.append(",").append(response2.toString()))
            .toString();
    System.out.println("ResultParallel: " + resultParallel);

    String result = list.stream().collect(StringBuilder::new,
            (response, element) -> response.append(" ").append(element),
            (response1, response2) -> response1.append(",").append(response2.toString()))
            .toString();

    System.out.println("Result: " + result);
Run Code Online (Sandbox Code Playgroud)

ResultParallel:1,2,3

结果:1 2 3

有人可以解释为什么会发生这种情况以及如何让非并行版本得到与并行版本相同的结果?

java parallel-processing java-stream

15
推荐指数
3
解决办法
244
查看次数

如何在 React 中将图像 url 作为道具传递

我有一个图像 uri,我想将其作为 prop 传递,以便在渲染组件时加载它。因为我将更改图像,所以我不能有静态 uri。但我一直收到这个错误

Error: Cannot find module "."
Run Code Online (Sandbox Code Playgroud)

尽管当我静态加载图像时它确实有效。另外我需要使用 img 元素而不是 Image。

require('./cube.jpg')
Run Code Online (Sandbox Code Playgroud)

这是我的代码

这是我的父类声明组件:

<InputSection ref="inputS" ImD={this.getData} imageUri={this.state.imageurl} />
Run Code Online (Sandbox Code Playgroud)

imageurl 状态定义为:

imageurl: './cube.jpg',
Run Code Online (Sandbox Code Playgroud)

子组件:

return(
<div style={style}>

<br/>

<img  ref="image" src={require(this.props.imageUri)} onLoad={this._onImageChanged.bind(this)} />
<canvas style={{display:'none'}}width={300} height={300} ref="inputCanvas" >

</canvas>
</div>
);
Run Code Online (Sandbox Code Playgroud)

frontend jsx reactjs

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

终端操作以评估中间操作

假设我有一个字符串列表,我想将这些字符串用作流利的构建器的输入。

List<String> scripts;

//initialize list

ScriptRunnerBuilder scriptRunnerBuilder = new ScriptRunnerBuilder();

BiFunction<String,ScriptRunnerBuilder,ScriptRunnerBuilder> addScript = 
(script,builder) -> builer.addScript(script);

scriptRunnerBuilder = scripts.stream.map(script -> 
addScript.apply(script,scriptRunnerBuilder)).......

scriptRunnerBuilder.build();
Run Code Online (Sandbox Code Playgroud)

我可以使用哪个终端操作,以便对列表中的所有元素调用addScript函数?

问题在于ScriptRunnerBuilder是不可变的,因此ScriptRunnerBuilder.addScript()返回新的ScriptRunnerBuilder对象,而不是修改现有对象-因此,我不能只是一个foreach。

我的意图是携带addScript()调用的结果,并将其用作流中下一个元素的输入

java java-8 java-stream

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