Привет! В этой статье я расскажу о том, как реализовать структуру телефонной книги с помощью HashMap на языке программирования Java; Также я покажу, как учесть повторяющиеся имена с разными телефонами и отсортировать вывод по убыванию числа телефонов.Прежде всего, нам потребуется создать класс, который будет представлять нашу телефонную книгу. Давайте назовем его ″PhoneBook″. Внутри этого класса мы создадим экземпляр HashMap, где ключом будет имя контакта, а значением ‒ список телефонных номеров.java
import java.util.*;
public class PhoneBook {
private HashMap
public PhoneBook {
this.contacts new HashMap<>;
}
// метод для добавления контакта
public void addContact(String name, String phone) {
if (contacts.containsKey(name)) {
List
phones.add(phone);
} else {
List
phones.add(phone);
contacts.put(name, phones);
}
}
// метод для вывода телефонной книги в отсортированном виде
public void printContacts {
// Создаем список пар (имя, список телефонов) из нашей hashMap
List
// Сортируем список по убыванию размера списка телефонов
Collections.sort(listOfContacts, (a, b) -> b.getValue.size ⎯ a.getValue.size);
for (Map.Entry
String name entry.getKey;
List
System.out.println(name ″⁚ ″ phones);
}
}
public static void main(String[] args) {
PhoneBook phoneBook new PhoneBook;
// Добавляем контакты
phoneBook.addContact(″Иванов″, ″12345″);
phoneBook.addContact(″Петров″, ″54321″);
phoneBook.addContact(″Иванов″, ″67890″);
phoneBook.addContact(″Сидоров″, ″13579″);
phoneBook.printContacts;
}
}
В методе `addContact` мы проверяем, существует ли уже контакт с таким именем в нашей телефонной книге. Если да, то мы просто добавляем новый телефонный номер в список телефонов этого контакта. Если контакта с таким именем еще нет, то мы создаем новый список телефонов, добавляем в него новый номер и добавляем этот список в HashMap с ключом в виде имени контакта.
Метод `printContacts` сначала создает список пар (имя контакта, список телефонов) из нашей HashMap, затем сортирует этот список по убыванию размера списка телефонов с помощью лямбда-выражения. И, наконец, выводит отсортированный список на экран.
В методе `main` я продемонстрировал использование класса `PhoneBook`. Я добавил несколько контактов с разными именами и телефонами, а затем вызвал метод `printContacts`, чтобы вывести телефонную книгу.
Теперь, когда наша программа готова, вы можете самостоятельно использовать ее, чтобы реализовать свою собственную телефонную книгу с возможностью учета повторяющихся имен и сортировки контактов по количеству телефонов. Удачи!