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

Java中连接两个列表项的最快方法

常博裕
2023-03-14
List<String> pairs = list1.stream()
                          .parallel()
                          .flatMap(item1 -> list2.stream()
                                                 .parallel()
                                                 .map(item2 -> item1 + " " + item2))
                          .collect(Collectors.toList());
List<String> pairs = new ArrayList<>();
    for(String item1 : list1)
        for(String item2 : list2)
            pairs.add(item1 + " " + item2);
    pool.submit(() -> {
        List<String> pairs = list1.stream()
                  .parallel()
                  .flatMap(item1 -> list2.stream()
                                         .parallel()
                                         .map(item2 -> item1 + " " + item2))
                  .collect(Collectors.toList());
    }).get();

共有1个答案

文寒
2023-03-14

获取顺序流的问题在FlatMap中。下面是关于高效拆分流的文章。

有几种方法可以分别组合两个或更多的流。其中一种方法是使用番石榴溪流:

Streams
  .zip(list1.stream(), list2.stream(), (item1, item2) -> item1 + ":" + item2)

请注意,此流也不是高效可拆分的。因此会损害并行性能。您可以在这里找到更多的方法:

 类似资料:
  • 问题内容: 用Java连接两个String的最快方法是什么? 即 我在中使用它作为键,并且在一个非常紧密的循环中调用它来检索值。 当我分析时,这就是瓶颈 问题答案: 这些例程出现在基准测试中的原因是因为这是编译器在幕后实施“ +”的方式。 如果您确实需要连接的字符串,则应让编译器以“ +”号表示神奇。如果你都需要对地图查找一个键,一键类控股与合适的两个字符串,并因为它避免了复制步骤的实现可能是一个

  • null 但这并没有我想要的那么好。因为我需要处理大量的列表,所以有没有想过让它更快、更少的资源消耗?

  • 我正在通过API分页,并将请求保存到数据帧。 我一次可以收集100行,这个循环目前运行一个多小时。 我担心这是因为一旦我达到100000行以上,添加下一个100行就会变得非常低效。 这是我当前的代码: 为了尽可能提高效率,我在整个请求中只保留了3列。我还会删除100行中出现的任何重复项。

  • 问题内容: 可以说我有两个长度相同的列表: 我想产生以下字符串: 实现此目标的最佳方法是什么? 我有以下实现: 输出为: 你有权衡吗? 问题答案: 给 。 然后: 结果

  • 问题内容: 所以我想知道如何最好地创建一个空白列表的列表: 由于Python如何处理内存中的列表,因此不起作用: 这确实会创建,但是每个元素都是相同的列表: 类似于列表理解的作品: 但这使用Python VM进行循环。有什么方法可以使用隐式循环(利用C语言编写的代码)吗? 这实际上要慢一些。:( 问题答案: 可能唯一的方法是比 是 它不必每次迭代都创建一个新对象,并且在我的计算机上快15%。 编辑

  • 我有两个数据帧和包含IP地址,我正在尝试将IP地址映射到地理位置信息,如经度和纬度,它们是中的列。 我运行它作为一个火花提交作业,但操作花了很长时间,即使只有不到2500行。 我的代码: 有没有其他方法可以加入这两张桌子?还是我做错了?