Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rubrica;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.List;
- import java.util.stream.Collectors;
- public class Rubrica {
- HashMap<String,Persona> rubricaM = new HashMap<String, Persona>(); // Crea un HashMap dove key: String, value: Persona
- /**
- * Il seguente metodo inserisce una persona all'interno dell HashMap
- * @param persona
- */
- public void inserisciPersona(Persona persona) {
- if(rubricaM.containsValue(persona)) { // se esiste già un oggetto persona come quello passato in input..
- System.out.println("Attenzione esiste già un numero attribuito a questa persona.");
- }else {
- this.rubricaM.put(persona.getCognome(), persona); // altrimenti lo inserisce
- }
- }
- /**
- * Restituisce la lista delle persone presenti nell HashMap
- * @return un ArrayList di oggetti Persona
- */
- public ArrayList<Persona> listaRubrica(){
- ArrayList<Persona> listaPersone = new ArrayList<Persona>(); // Arraylist dove andrò a memorizzare le persone presenti nell HashMap
- Collection<Persona> collectionPersone = rubricaM.values(); // salvo in una variabile di tipo Collection le persone presenti nell Hashmap
- for(Persona p : collectionPersone) { //Aggiungo ogni persona presente nella collection al mio ArrayList
- listaPersone.add(p);
- }
- return listaPersone; //Restituisco l'ArrayList dove ho salvato tutti gli oggetti Persona presenti nella Collection.
- }
- /**
- * Il seguente metodo stampa in console la lista delle persone presenti in rubrica
- */
- public void stampaRubrica() {
- Collection<Persona> collectionPersone = rubricaM.values();
- for(Persona p : collectionPersone) {
- System.out.println("Nome: " + p.getNome() + ", Cognome: " + p.getCognome() + ", Telefono: " + p.getTel());
- }
- }
- /**
- * Il seguente metodo elimina dalla rubrica l'oggetto di tipo Persona passato in input.
- * @param persona : l'oggetto persona che voglio eliminare dal mio HashMap.
- * @return true se la rimozione è avvenuta con successo, false altrimenti.
- */
- public boolean eliminaPersona(Persona persona) {
- boolean removed = false; // Variabile booleana sentinella, la imposto a false, e rimarrà false se la persona non è presente nell HashMap.
- if(rubricaM.containsKey(persona.getCognome())) { // Se esiste all'interno dell HashMap una chiave uguale al cognome dell'oggetto Persona passato in input..
- rubricaM.remove(persona);
- removed = true; // Imposto la mia variabile sentinella a true dopo la rimozione.
- }
- return removed; // Sarà false se non entro nell'if.. true altrimenti.
- }
- /**
- * Il seguente metodo mi restituisce un ArrayList "filtrato" in base al nome e cognome della Persona passato in input.
- * @param nome
- * @param cognome
- * @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.
- * in caso di valori in input null, mi restituisce la lista non filtrata di tutti gli oggetti Persona presenti nell' HashMap.
- */
- public ArrayList<Persona> getListaPersona( String nome, String cognome){
- List<Persona> lista = rubricaM.values().stream().filter(p -> { //Apro un flusso sulla collezione restituita da "rubrica.values()" e filtro mediante valore lambda.
- return (nome == null || nome.equals(p.getNome())) && (cognome == null || cognome.equals(p.getCognome())); // Condizione di filtraggio
- }).collect(Collectors.toList()); // decido di salvare gli oggetti di tipo Persona in una lista (toList)
- return (ArrayList<Persona>) lista; // Restituisco l'ArrayList composto di oggetti di tipo Persona che sono "sopravvissuti" al filtro.
- }
- /**
- * Testo i metodi
- * @param args
- */
- public static void main(String[] args) {
- Rubrica rub = new Rubrica();
- Persona p1 = new Persona("Alessandro", "Tozzi", "3295891584");
- Persona p2 = new Persona("Eleonora", "Creta", "3297810738");
- rub.inserisciPersona(p1);
- rub.inserisciPersona(p2);
- ArrayList<Persona> arrayP = rub.getListaPersona(null, null);
- for(Persona p : arrayP) {
- System.out.println("Nome: " + p.getNome() + ", Cognome: " + p.getCognome() + ", Telefono: " + p.getTel());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement