Удаление ребра из списка смежности - PullRequest
0 голосов
/ 07 мая 2020

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


public class DirectedGraph {

    private final Map<String, Set<Map.Entry<String, String>>> adj;

    public Graph() {
        adj = new HashMap<>();
    }

    public boolean removeEdge(String origin, String dest, String label) {
        if (!adj.containsKey(origin)) {
            throw new IllegalArgumentException("Node " + origin + " is not in this graph.");
        } else if (!adj.containsKey(dest)) {
            throw new IllegalArgumentException("Node " + dest + " is not in this graph.");
        }

        boolean success = false;

        if (adj.containsKey(origin) && adj.get(origin).contains(new AbstractMap.SimpleImmutableEntry<>(dest, label))) {
            adj.get(origin).remove(new AbstractMap.SimpleImmutableEntry<>(dest, label));
            success = true;
        }

        return success;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...