Пишу программу Телефонная книга и не получаются следующие методы. HashMap у меня состоит из класса Юзер и сета Контактов (с номерами телефонов домашний, мобильный).
static Map<User,Set<Contact>> phoneBook = new HashMap<>();
Contact firstContact = new Contact(532564856);
Set<Contact> setOfContacts = new HashSet<>();
...
searchByName - метод должен делать поиск по имени
static void searchByName(String name) {
if (phoneBook.containsKey(name))
System.out.println(phoneBook.get(name));
else{
System.out.println("Sorry. The contact is not exist");
}
}
searchByNumber - метод должен делать поиск по мобильному/домашнему номеру телефона
static void searchByNumber(int num) {
if (phoneBook.containsValue(num)) {
System.out.println(phoneBook.get(num));
}else
System.out.println("Number is not found");
}
printAllContacts - метод должен выводить все контакты (имя - номер или номера)
static void printAllContacts(){
System.out.println("ALL CONTACTS " + phoneBook);
System.out.println();
}
addNewContact - добавить новый контакт
static void addNewContact(Set<Contact> addNewContact, Contact contact){
if (addNewContact.contains(contact)) {
addNewContact.remove(contact);
}
addNewContact.add(contact);
}
static void deleteContact (String contactToDelete) {
phoneBook.remove(contactToDelete);
System.out.println("Deleted contact: "+contactToDelete);
}
Мапа у вас содержит ключ - user объект, значение - set
Map<User,Set<Contact>> phoneBook
А вы пытаетесь искать по String
static void searchByName(String name) {
if (phoneBook.containsKey(name))
Можно ли среди людей найти строчку? Вряд ли.
Вам надо либо переделать Map<User,Set<Contact>>
на Map<String, Integer>
, тогда ваши методы начнут работать.
Либо изменить методы на
searchByUser(User user);
searchBySetContect(Set<Contact>);
Либо последний вариант, который уберет всю полезность HashMap
static void searchByName(String name) {
for(User user : phoneBook.keySet()){
if (user.getName.equals(name))
...
И по поводу этого метода:
addNewContact
- добавить новый контакт
static void addNewContact(Set<Contact> addNewContact, Contact contact){
if (addNewContact.contains(contact)) {
addNewContact.remove(contact);
}
addNewContact.add(contact);
}
Set содержит только уникальные значения, т.е.
if (addNewContact.contains(contact)) {
addNewContact.remove(contact);
}
ненужно, т.к. Set сам все сделает (Если в классе Contact переопределены методы equals и hashCode)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
есть строка cbr-coa-dic:Osv_Dt_A_10501$dim-int:Nacz_Inostr_Valyuta_Axis/mem-int:Nacz_Valyuta_Rf_Member ее необходимо раздеить по символу $ пробовал делить String[] soch = fsplit( "$"); но деления...