Ordinare ArrayList in base ad un criterio

di il
6 risposte

Ordinare ArrayList in base ad un criterio

Salve ragazzi ho da ordinare un arrayList che contiene al suo interno degli oggetti (ArrayList di prodotti) questi prodotti alcuni hanno una data di scadenza altri no, volevo sapere se esiste una funzione che mi permetta creare un criterio di ordinabilità e in base a quello ordinare ho letto in giro di Collection.Sort ma non ho ben chiaro come viene usato

6 Risposte

  • Re: Ordinare ArrayList in base ad un criterio

    broke31 ha scritto:


    salve ragazzi ho da ordinare un arrayList che contiene al suo interno degli oggetti (ArrayList di prodotti) questi prodotti alcuni hanno una data di scadenza altri no, volevo sapere se esiste una funzione che mi permetta creare un criterio di ordinabilità e in base a quello ordinare ho letto in giro di Collection.Sort ma non ho ben chiaro come viene usato
    In questa discussione parlavo appunto di quel sort() e di Comparable/Comparator (in modo più specifico di Comparable).
  • Re: Ordinare ArrayList in base ad un criterio

    SI, hai ragione ma adesso non posso usare una LinkedList ma devo usare un arrayList ed ho creduto che queste due cose si comportano in modo diverso essendo tipi diversi infatti ci sto provando ma non ci riesco
  • Re: Ordinare ArrayList in base ad un criterio

    Potresti fare come ho fatto io. Usi un ArrayList temporaneo in cui inserisci gli oggetti che hanno le date, fai un ordinamento su quest'ArrayList e alla fine aggiungi gli oggetti senza le date... credo che cosi facendo possa andare bn
  • Re: Ordinare ArrayList in base ad un criterio

    broke31 ha scritto:


    non posso usare una LinkedList ma devo usare un arrayList
    sort() di Collections riceve un List (interfaccia), quindi concettualmente funziona per qualunque lista.
  • Re: Ordinare ArrayList in base ad un criterio

    Ho provato a fare in questo modo ma non funziona a debbugger vedo che non viene mai invocata la funzione compare
    public ArrayList<Prodotto> ordinaPerCosto(){
    		ArrayList<Prodotto> catalogoOrdinato = storicoAcquisti;
    		Collections.sort(catalogoOrdinato, new Comparator<Prodotto>(){
    			@Override
    			public int compare(Prodotto o1, Prodotto o2){
    				return ((Double)o1.getPrezzo()).compareTo(o2.getPrezzo());
    			}
    		});
    		return catalogoOrdinato;	
    	}
  • Re: Ordinare ArrayList in base ad un criterio

    broke31 ha scritto:


    ho provato a fare in questo modo ma non funziona a debbugger vedo che non viene mai invocata la funzione compare
    Il codice che hai scritto è tecnicamente corretto, non vedo nulla di palesemente errato.
    Bisognerebbe vedere meglio il contesto, il resto del codice.

    Una cosa te la faccio notare: quando fai

    ArrayList<Prodotto> catalogoOrdinato = storicoAcquisti;

    stai semplicemente copiando il reference, l'oggetto lista è sempre quello. Se pensavi di tenere la lista storicoAcquisti così come è ed ottenere un'altra lista ma ordinata .... non è così.
Devi accedere o registrarti per scrivere nel forum
6 risposte