当前位置: 首页 > 知识库问答 >
问题:

如何使用parallelStream处理2个列表

轩辕奕
2023-03-14

我有两组帐号,基于加元和美元货币。基于这些列表,我需要通过传递请求参数来调用相同的方法,一个用于CAD,另一个用于USD。

List<List<String>> accountNumberList = Arrays.asList(
      accountNumbersCAD, accountNumbersUSD
);
List<String> response = new ArrayList<>();
accountNumberList.parallelStream().forEach(s -> {
      String response1 = null;
      String response2 = null;
    try {
        response1 = performanceService.retrievePeriodData(reqCAD).toString();
        response2 = performanceService.retrievePeriodData(reqUSD).toString();   
    } catch (ApiException e) {

    }

      response.add(response1);
      response.add(response2);
    });

return (ResponseEntity<String>) response;

请指导我如何使用并行流

提前感谢!

共有1个答案

靳越
2023-03-14

您无法使用forEach从并行流填充列表,因为这将导致意外结果,并且每次生成的列表大小可能不同。而是使用同步列表或使用collect方法填充列表。

List<Double> response = Collections.synchronizedList(new ArrayList<>());

在我看来,流内部的映射看起来并不复杂,可能没有使用并行流的意义,请自己比较顺序流和并行流的性能。

作为第二个选项,您可以使用收集2次,它应该比使用同步列表更有效。

Function<PerformanceDataRequest, String> mapper = s -> {
    try {
        return performanceService.retrievePeriodData(s).toString();
    } catch (ApiException e) {}
 };

List<String> response = accountNumberList.parallelStream().map(mapper.apply(reqCAD)).collect(Collectors.toList());
response.addAll(accountNumberList.parallelStream().map(mapper.apply(reqUSD)).collect(Collectors.toList()));

我不知道reqCAD/reqUSD是什么类型,所以我用E代替。

 类似资料:
  • 我正在创建一个图表,其中包含2个E(即一个,包含2个对象)。 碰巧的是,两个对象都具有相同的精确值,它们只是重叠,但客户机并不清楚这一点,因为他只看到结果颜色或混合了两个对象的颜色! 所以他看到图表显示了两组数据,而只画了一条线! 他们是解决这个问题的固有方法吗?你怎么解决?

  • 我有两个流A和B。 我开始同时吃A和B。 流A仅在每分钟的第59秒获得记录。 流B在每分钟的任何一秒都有记录。 我希望处理使两个流同步。 示例:在10:01:59之后从流A中,我将在10:02:59收到一条记录,直到10:02:59,我也不想从流B中读取任何内容。 这可以在Flink中实现吗?

  • 问题内容: 我想提醒一个字符串的每个字母,但是我不确定该怎么做。 所以,如果我有: 我希望能够分别警告T,h,i,s等。这仅仅是我正在研究的一个想法的开始,但是我需要知道如何分别处理每个字母。 我想使用jQuery,并考虑在测试字符串的长度后可能需要使用split函数。 有想法吗? 问题答案: 如果警报的顺序很重要,请使用以下命令: 如果警报的顺序无关紧要,请使用以下命令:

  • 问题内容: 我正在尝试使用HBase作为Spark的数据源。因此,第一步证明是从HBase表创建RDD。由于Spark使用hadoop输入格式,因此我可以通过创建rdd http://www.vidyasource.com/blog/Programming/Scala/Java/Data/Hadoop/Analytics/2014/01/25找到使用所有行的方法/ lighting-a-spark

  • 想知道如何看待mysql json专栏? category_ids例如) [19, 102, 108] 如果我想搜索包含类别id 102的产品列表,如何使用queryDSL进行查询? 我尝试了JsonNode类型,但它不起作用。

  • 问题内容: 我正在连接到一个网站,正在登录。 该网站将我重定向到新页面,并且Mechanize处理所有cookie和重定向作业,但是,我找不到最后一页。我使用Firebug并再次完成了相同的工作,然后发现我必须通过Mechanize传递另外两页。 我快速浏览了一下页面,发现有一些JavaScript和HTML代码,但由于它看起来不像普通的页面代码而无法理解。这些页面是做什么用的?他们如何重定向到其