Advertisement
Guest User

Esercitazione Rubrica.

a guest
Jun 23rd, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.20 KB | None | 0 0
  1. package rubrica;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.stream.Collectors;
  8.  
  9. public class Rubrica {
  10.    
  11.     HashMap<String,Persona> rubricaM = new HashMap<String, Persona>(); // Crea un HashMap dove key: String, value: Persona
  12.    
  13.     /**
  14.      * Il seguente metodo inserisce una persona all'interno dell HashMap
  15.      * @param persona
  16.      */
  17.     public void inserisciPersona(Persona persona) {
  18.        
  19.         if(rubricaM.containsValue(persona)) { // se esiste già un oggetto persona come quello passato in input..
  20.             System.out.println("Attenzione esiste già un numero attribuito a questa persona.");
  21.         }else {
  22.             this.rubricaM.put(persona.getCognome(), persona); // altrimenti lo inserisce
  23.         }
  24.        
  25.     }
  26.     /**
  27.      * Restituisce la lista delle persone presenti nell HashMap
  28.      * @return un ArrayList di oggetti Persona
  29.      */
  30.     public ArrayList<Persona> listaRubrica(){
  31.        
  32.         ArrayList<Persona> listaPersone = new ArrayList<Persona>(); // Arraylist dove andrò a memorizzare le persone presenti nell HashMap
  33.         Collection<Persona> collectionPersone = rubricaM.values(); // salvo in una variabile di tipo Collection le persone presenti nell Hashmap
  34.        
  35.         for(Persona p : collectionPersone) { //Aggiungo ogni persona presente nella collection al mio ArrayList
  36.             listaPersone.add(p);
  37.         }
  38.         return listaPersone; //Restituisco l'ArrayList dove ho salvato tutti gli oggetti Persona presenti nella Collection.
  39.     }
  40.    
  41.     /**
  42.      * Il seguente metodo stampa in console la lista delle persone presenti in rubrica
  43.      */
  44.     public void stampaRubrica() {
  45.         Collection<Persona> collectionPersone = rubricaM.values();
  46.        
  47.         for(Persona p : collectionPersone) {
  48.             System.out.println("Nome: " + p.getNome() + ", Cognome: " + p.getCognome() + ", Telefono: " + p.getTel());
  49.         }
  50.        
  51.     }
  52.    
  53.     /**
  54.      * Il seguente metodo elimina dalla rubrica l'oggetto di tipo Persona passato in input.
  55.      * @param persona : l'oggetto persona che voglio eliminare dal mio HashMap.
  56.      * @return true se la rimozione è avvenuta con successo, false altrimenti.
  57.      */
  58.     public boolean eliminaPersona(Persona persona) {
  59.        
  60.         boolean removed = false; // Variabile booleana sentinella, la imposto a false, e rimarrà false se la persona non è presente nell HashMap.
  61.         if(rubricaM.containsKey(persona.getCognome())) { // Se esiste all'interno dell HashMap una chiave uguale al cognome dell'oggetto Persona passato in input..
  62.             rubricaM.remove(persona);
  63.             removed = true; // Imposto la mia variabile sentinella a true dopo la rimozione.
  64.         }
  65.         return removed; // Sarà false se non entro nell'if.. true altrimenti.
  66.     }
  67.  
  68.     /**
  69.      * Il seguente metodo mi restituisce un ArrayList "filtrato" in base al nome e cognome della Persona passato in input.
  70.      * @param nome
  71.      * @param cognome
  72.      * @return La lista contenente oggetti Persona dove il nome è uguale al nome passato in input e/o il cognome è uguale al cognome passato in input.
  73.      *         in caso di valori in input null, mi restituisce la lista non filtrata di tutti gli oggetti Persona presenti nell' HashMap.
  74.      */
  75.     public ArrayList<Persona> getListaPersona( String nome, String cognome){
  76.        
  77.         List<Persona> lista =  rubricaM.values().stream().filter(p -> { //Apro un flusso sulla collezione restituita da "rubrica.values()" e filtro mediante valore lambda.
  78.             return  (nome == null || nome.equals(p.getNome())) && (cognome == null || cognome.equals(p.getCognome()));  // Condizione di filtraggio
  79.         }).collect(Collectors.toList()); // decido di salvare gli oggetti di tipo Persona in una lista (toList)
  80.        
  81.         return (ArrayList<Persona>) lista; // Restituisco l'ArrayList composto di oggetti di tipo Persona che sono "sopravvissuti" al filtro.
  82.        
  83.     }
  84.    
  85.     /**
  86.      * Testo i metodi
  87.      * @param args
  88.      */
  89.     public static void main(String[] args) {
  90.         Rubrica rub = new Rubrica();
  91.         Persona p1 = new Persona("Alessandro", "Tozzi", "3295891584");
  92.         Persona p2 = new Persona("Eleonora", "Creta", "3297810738");
  93.         rub.inserisciPersona(p1);
  94.         rub.inserisciPersona(p2);
  95.         ArrayList<Persona> arrayP = rub.getListaPersona(null, null);
  96.        
  97.         for(Persona p : arrayP) {
  98.             System.out.println("Nome: " + p.getNome() + ", Cognome: " + p.getCognome() + ", Telefono: " + p.getTel());
  99.         }
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement