java - 如何使用Java中的Loop提高递归方法的性能

标签 java recursion

我尝试在递归操作中使用内存模式,但出了问题。

下面是我的方法。

private Map<String, MyDTO> map = new ConcurrentHashMap<>();

private void searchRecursive(String uuid) {
    if (!map.containsKey(uuid)) {
        MyDTO obj = myClient.getMyObject(uuid);

        if("one".equals(obj.getType()) || "two".equals(obj.getType())){
            if(Objects.nonNull(obj.getChildren())){
                obj.getChildren().forEach(child -> searchRecursive(child.getId()));
            }
        } else if("three".equals(obj.getType())) {
            map.put(uuid, obj);
        }
    }
}

我想提高此操作的性能!

非常感谢您的帮助!

最佳答案

我认为正如@John3136所说,getType()、getChildren()调用多次,最好创建一个引用并减少这些方法的调用时间。

我猜你要搜索的对象就像一个图或树,所以我认为你可以尝试使用 BFS 方法(类似队列的数据结构)转换为迭代子对象,那会更好。

关于java - 如何使用Java中的Loop提高递归方法的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58738976/

相关文章:

javascript - 如何使用nodeJS导出本地文件夹结构?

java - Netbeans 上的 Visual Web Pack 的 "Missing Body Element"

java - 渲染时刷新表

java - 使用 JAXB 将 XML 文档嵌入到另一个 XML 中

java - JBoss session 30 秒后自动过期

java - 递归查找两个整数之间公共(public)数字的最后一个索引

sql-server - 在 SQL Server 中通过递归 CTE 创建排列?

algorithm - 是否有任何非递归/堆栈消耗,自下而上的二叉树遍历算法?

c - 试图理解 C 中的递归

Java拆分正则表达式模式字母和数字