Domanda Risolto RUBRICA CON HASHMAP

Stato
Discussione chiusa ad ulteriori risposte.

elcondor

Utente Bronze
28 Settembre 2020
48
13
3
24
Salve in allegato un esercizio di un corso.
SCRIVERE UN PROGRAMMA JAVA CHE PERMETTA DI GESTIRE UNA RUBRICA TELEFONICA. REALIZZARE LA CLASSE PEROSNA NOME E COGNOME EMAIL INDIRIZZO E NUMERO DI TELEFONO. Questo è facile già fatta.
Ecco la parte più difficile:

REALIZZARE LA CLASSE RUBRICA DOVE LA LISTA DEI CONTATTI è REALIZZATA MEDIANTE UNA HASHMAP IN CUI LE CHIAVI SONO I N UMERI DI TELEFONO E I VALORI SONO OGGETTI DI TIPO PERSONA. LA CLASSE RUBRICA DEVE ANCHE PREVEDERE I METODI:
- INSERIMENTO NUOVO CONTATTO
- CANCELLAZIONE CONTATTO
- RICERCA CONTATTO
- RICERCA DEL NUMERO DI TELEFONO PER UN CONTATTO DI CUI SI CONOSCE NOME E COGNOME.
- STAMPA DI TUTTI I CONTATTI IN ORDINE ALFABETICO.


Messaggio unito automaticamente:

IO HO FATTO COSI MA DA ERRORE
Java:
public class Rubrica {
    HashMap<String, Persona> contatti = new HashMap<String, Persona>();

    public void inserisci(String numero_telefono, Persona persona) {
        contatti.put(numero_telefono, persona);
    }

    public void rimuovi(String numero_telefono) {
        contatti.remove(numero_telefono);

    }

    public Persona ricercaPersona(String numero_telefono) {
        Persona persona = contatti.get(numero_telefono);
        return persona;

    }

    public String ricercaTelefono(String nome, String cognome) {
        for (Map.Entry<String, Persona> rubrica : contatti.entrySet()) {
            if (rubrica.getValue().contains(cognome)) {                 // QUI MI DA ERRORE MANNAGGIA

                Persona persona = ricercaPersona(rubrica.getKey());

                if (persona.getNome().equalsIgnoreCase(nome)) {
                    return persona.getTelefono();
                }
            }

            return "nome non presente in rubrica";

        }

    }

}
 
Ultima modifica da un moderatore:
Con i metodi HashMap:

Java:
public String ricercaTelefono(String nome, String cognome) {

        //"Iterare" sull'insieme delle chiavi (tutti i numeri di telefono disponibili)
        for (String nrTelefono : contatti.keySet() ) {

           //Estrarre il valore (un oggetto Persona) con la chiave nrTelefono
            Persona p = contatti.get(nrTelefono);

            //Restituisco il nrTelefono se la persona corrisponde, altrimenti vado avanti nella ricerca
            if(p.getCognome().equalsIgnoreCase(cognome) && p.getNome().equalsIgnoreCase(nome)){
                return nrTelefono;
            }
         }

         return "Contatto non presente in rubrica";

}

Edit:
Non conosco Map.Entry ma credo che
Java:
rubrica.getValue()
sia un oggetto Persona.

Quindi:
Java:
public String ricercaTelefono(String nome, String cognome) {
        for (Map.Entry<String, Persona> rubrica : contatti.entrySet()) {
            Persona p = rubrica.getValue();
            if(p.getCognome().equalsIgnoreCase(cognome) && p.getNome().equalsIgnoreCase(nome)){
                return p.getTelefono();
            }
        }
        return "Contatto non presente in rubrica";
    }

Prova e fammi sapere
 
  • Mi piace
Reazioni: elcondor
Stato
Discussione chiusa ad ulteriori risposte.