java - 有什么方法可以用 2 个嵌套循环来加速算法吗?

标签 java jsp spring-mvc javabeans

我遇到了一个不幸的 O(n^3) 情况,我需要一些建议。在英语中,情况是:打印每个类别名称,然后对于每个类别,抓取与该类别相关的每一本书。然后,对于每本书,获取与该书相关的每个作者和描述。

<c:forEach items="${categories}" var="category">
    <h2>${category.name}</h2>
        <c:forEach items="${category.books}" var="book">
            <h3>${book.title}</h3>
                <c:forEach items="${book.authors}" var="author">
                    <h4>${author.name}</h4>
                </c:forEach>
                <c:forEach items="${book.descriptions}" var="description">
                    <p>${description.description}</p>
                </c:forEach>
        </c:forEach>
</c:forEach>

似乎按类别获取所有书籍,然后按书籍获取所有作者和描述,这是执行此操作的唯一方法......但这不可能是正确的。我对算法很陌生,并且加快了速度,所以我会接受您提供的任何建议。谢谢!

最佳答案

我同意@duffymo,在某些情况下,您无法降低算法的复杂性(尤其是在将输出打印到屏幕上时)。需要打印出所有信息,算法复杂度没有太大优化空间。

如果您必须重复打印某些内容,例如一本特定的书打印 1000 次,那么您可以进行优化 - 例如,您可以简单地通过串联将作者“预先计算”为一个字符串并使用该字符串。这将导致而不是迭代所有例如作者每次请求书籍信息时,只需取出准备好的字符串并将其打印出来。因此,对于 1000 个请求,您只需执行一个周期。

关于java - 有什么方法可以用 2 个嵌套循环来加速算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674901/

相关文章:

java - 选择 Gradle 生成的源代码的目录

java - 出现错误 : The type java. util.Map$Entry 无法解决。它是从必需的间接引用的

java - Hibernate 5 延迟加载问题

javascript - 如何使用javascript动态添加jsp页面中的内容?

java - Spring MVC 3 中的异常处理以显示无效 URL 的自定义错误页面

java - Spring MVC 在端点上使用相同的路径来返回不同的内容?

spring - 什么 CMS 用于 Spring MVC Web 应用程序和设备响应式 Web 设计?

java - 为什么removeListener()方法应该根据JavaBeans标准接受参数?

java - 方法的返回类型是一个特定的对象?

java - 将复杂对象传递给 Activity