работа метода getAllContacts

Прошу помочь с описанием работы метода getAllContacts. Не получается детально разобрать его выполнение, прошу разъяснить подробно.

    TreeMap<String, String> listPhone = new TreeMap<>();

    boolean regexName(String name) {
        return Pattern.matches("[а-яёА-ЯЁ]+", name);
    }

    boolean regexPhone(String phone) {
        return Pattern.matches("7[0-9]{10}", phone);
    }

    public void addContact(String phone, String name) {
        // проверьте корректность формата имени и телефона
        // (рекомедуется написать отдельные методы для проверки является строка именем/телефоном)
        // если такой номер уже есть в списке, то перезаписать имя абонента
        if (regexName(name) & regexPhone(phone)) {
            listPhone.put(phone, name);
        }
    }

    public String getContactByPhone(String phone) {
        // формат одного контакта "Имя - Телефон"
        // если контакт не найдены - вернуть пустую строку
        for (Map.Entry<String, String> entry : listPhone.entrySet()) {
            if (entry.getKey().equals(phone)) {
                return entry.getValue() + " - " + entry.getKey();
            }
        }
        return "";
    }

    public Set<String> getContactByName(String name) {
        // формат одного контакта "Имя - Телефон"
        // если контакт не найден - вернуть пустой TreeSet
        TreeSet<String> line = new TreeSet<>();
        for (Map.Entry<String, String> entry : listPhone.entrySet()) {
            if (entry.getValue().equals(name)) {
                line.add(entry.getValue() + " - " + entry.getKey());
            }
        }
        return new TreeSet<>(line);
    }

    public Set<String> getAllContacts() {
        // формат одного контакта "Имя - Телефон"
        // если контактов нет в телефонной книге - вернуть пустой TreeSet
        TreeMap<String, String> relist = new TreeMap<>();

        for (Map.Entry<String, String> entry : listPhone.entrySet()) {
            if (relist.containsKey(entry.getValue())) {
                relist.put(entry.getValue(), relist.get(entry.getValue()) + ", " + entry.getKey());
            } else {
                relist.put(entry.getValue(), entry.getKey());
            }
        }

        Set<String> list = new TreeSet<>();

        for (Map.Entry<String, String> entry : relist.entrySet()) {
            String contact = entry.getKey() + " - " + entry.getValue();
            list.add(contact);
        }
        return list;
    } ```

Ответы (0 шт):