Filtrare Valori Unici

di il
7 risposte

Filtrare Valori Unici

Ciao a tutti,
ho la necessità di filtrare in maniera univoca un array popolato con numeri di telefono ed e-mail.
Esiste un metodo già implementato nelle ArrayUtils o bisogna scriverlo da zero?

Ciao e Grazie
Fulvio

7 Risposte

  • Re: Filtrare Valori Unici

    Questa E' BANALE!!!!!

    Si sfrutta la proprieta' degli insiemi ("set" in inglese)
  • Re: Filtrare Valori Unici

    @migliorabile
    un aiutino in più?
    Scusa se sono banale...
  • Re: Filtrare Valori Unici

    Dai, spremiti un po' le meningi

    Che cosa e' un insieme?
    Che cosa succede se aggiungi DUE VOLTE lo stesso elemento ad un insieme?

    ESISTONO, e se si, QUALI SONO le strutture dati Java che implementano il concetto di insieme?
  • Re: Filtrare Valori Unici

    @migliorabile
    Non sei obbligato a rispondere, se non ti va, ma NON siamo a scuola.

    Qualcun'altro?
  • Re: Filtrare Valori Unici

    Ciao a tutti,
    ho implementato la soluzione che mi serviva con il codice Java che conosco, ovvero:
    String cf = userContext.getAnagrafica().getCfPiva();
    		ContattiAgenziaDTO contattiAgenziaDTO = new ContattiAgenziaDTO();
    		
    		List<String> email = new ArrayList<String>();
    		List<String> telefono = new ArrayList<String>();
    		
    		Anagrafe anagrafe = anagraficaServiziService.leggiDatiAnagrafici(cf);
    		List<Recapito> recapiti = anagrafe.getRecapiti();
    		for(Recapito recapito : recapiti) {
    			if(recapito.getTipo()== Constants.ANAGRAFICA_SERVIZI_TIPO_RECAPITO_TELEFONO) {
    				if (!existInList(recapito.getValore(), telefono))
    					telefono.add(recapito.getValore());
    			}
    			else if(recapito.getTipo()==Constants.ANAGRAFICA_SERVIZI_TIPO_RECAPITO_EMAIL) {
    				if (!existInList(recapito.getValore(), email))
    					email.add(recapito.getValore());
    			}
    		}
    		
    		contattiAgenziaDTO.setEmail(email);
    		contattiAgenziaDTO.setNumeroTelefono(telefono);
    		
    		return contattiAgenziaDTO;
    	}		
    
    	private boolean existInList (String valore, List<String> listaValori) {
    		boolean esiste = false;
    		for(String valoreUnivoco : listaValori) {
    			if ((valoreUnivoco.toString().toLowerCase()).equals(valore.toLowerCase())) {
    			esiste = true;
    			break;
    			}
    		}
    		return esiste;
    	}
    
    Se qualcun'altro, a parte @migliorabile, ha voglia di mostrarmi una soluzione alternativa, gliene sarò grato.

    Ciao
    Fulvio
  • Re: Filtrare Valori Unici

    Set<String> come dice migliorabile, altrimenti usa pure il tuo codice, magari con il trim degli spazi e col return diretto al posto della variabile esiste
  • Re: Filtrare Valori Unici

    Ciao,
    per evitare questo genere di problemi in futuro ti consiglio di dare una ripassata alle Collections e prendere dimistichezza nel consultare la documentazione di Oracle:
    https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

    public interface Set<E> extends Collection<E>
    A collection that contains no duplicate elements.

    In parole povere: il Set è come il List, ma senza duplicati.
Devi accedere o registrarti per scrivere nel forum
7 risposte