如何优化每个循环的嵌套

How to optimize nested for each loops

我想优化下面的代码。流会优化下面嵌套的 foreach 循环吗?如果是流的新手,有人可以帮助我吗?在下面,出于项目保密的目的,我已经替换了名称。应在代码中使用 tList 进行进一步处理。有人可以帮忙吗?

List<Tea> tea = requestBody.getTea();
            
for (Tea tea1 : teas) {
    List<String> teaValues = tea1.getTeaValues();
    for (String t : teaValues) {
        if ((t).contains("tMapping") || ((t).contains("tdata"))) {
            int subStrng = t.indexOf(".") + 1;
            int subStrngSpace = t.indexOf(" ");
            String tStrng = t.substring(subStrng, subStrngSpace);
            tList.add(tStrng);
        } else {
            String[] tStrng = t.split("\'");
                String t1 = tStrng[1];
                tList.add(t1);
            
        }
    }
}

Will streams optimize the below nested foreach loops?

不,不是真的。除非你有一个 真的 大输入并且你正在使用一个有多个 processes/cores 的服务器,否则你可以通过使用 parallel streams.[=13 来提高速度=]

否则,这些流将只是“在幕后”转换为循环...

这是为了回答你的问题。

现在让我们看看问题背后的问题...为什么要优化它?您如何知道您的优化级别是否足够好?

编辑:

  1. 如果要将其设计为处理超大输入,则需要使用并发。最简单的方法是使用并行流。
  2. 更好的办法是将此处理代码从应用程序移到数据库中。它将能够更快地处理这个问题。只需编写一个本机查询(请参阅 here),它会在数据库中执行所有数据转换。