首页 > 解决方案 > 如何优化每个循环的嵌套

问题描述

我想优化下面的代码。流会优化下面嵌套的 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);
            
        }
    }
}

标签: javaoptimizationforeachjava-stream

解决方案


流会优化下面嵌套的 foreach 循环吗?

不,不是真的。除非您有非常大的输入并且您正在使用具有多个进程/内核的服务器,否则您可以通过使用并行流来加快速度。

否则,这些流将被转换为“在引擎盖下”的循环......

这是为了回答你的问题。

现在让我们看看问题背后的问题......为什么要优化它?你怎么知道你的优化水平足够好?

编辑:

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

推荐阅读