Java 有没有办法用两个嵌套循环来加速算法?

Java 有没有办法用两个嵌套循环来加速算法?,java,jsp,spring-mvc,javabeans,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">

我遇到了一个不幸的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>

${category.name}
${book.title}
${author.name}
${description.description}


似乎要把所有的书分类,然后把所有的作者和描述都分类,这是唯一的方法。。。但那不可能是对的。我对算法和加速技术不熟悉,所以我会接受你的任何建议。谢谢

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


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

直觉上,类别可能比书籍少很多,描述和作者也少很多,因此最大的数据结构将是书籍。这实际上不是一个O(n^3)的情况,因为有多个更小的结构需要考虑,所以我认为目前不需要太多优化。

我不认为这是一个问题。您进行了哪些测量来证明这是一个问题?不要担心大的Oh符号。如果数据集足够小,就可以了。谷歌从一个查询中获得数百万次点击,但每次只显示一个页面。您的用户不希望在UI中处理成百上千本书。你应该考虑分页。没错,分类比书籍少,但是每本书可以有多个作者(像教科书)和多个描述(要点),所以现在最大的数据结构是作者。类别:传记可能有10本书,其中5本书可能各有2位作者。