Как улучшить производительность в рекурсивном методе с помощью Loop в Java - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь использовать шаблон памятки в моей рекурсивной операции, но что-то идет не так.

Ниже приведен мой метод.

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);
        }
    }
}

Я хотел бы улучшить производительностьэта операция!

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 07 ноября 2019

Я думаю, что, как сказал @ John3136, getType (), getChildren () вызывались более одного раза, лучше создать ссылку и сократить время вызова для этих методов.

Я предполагаю, что объект выПопытка поиска похожа на график или дерево, поэтому я думаю, что вы можете попытаться преобразовать, чтобы повторить дочерний процесс, используя метод BFS (очередь как структура данных), это было бы лучше.

...