Newsgroup: it.comp.java
Titolo: ordinamento arraylist

Siamo due studenti alle primissime armi con JAVA.
Abbiamo una arraylist di CD (titolo,nome, codice)
e dobbiamo ordinarla per aurore, ma non ne usciamo!!!!!
Di seguito il codice della classe Negozio
/*
 * NegozioArray.java
 *
 * Created on 11 maggio 2007, 18.13
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package negozioarray;
import java.util.*;
/**
 *
 * @author luisa
 */
public class Negozio {
    private int numVendite =0;
    private ArrayList<CD> elencoCD;
 
    /** Creates a new instance of Negozio */
    public Negozio() {
        elencoCD = new ArrayList<CD>();
 
    }
    public void addCD(CD fmycd){
        elencoCD.add(fmycd);
    }
 
 
    public void registraVendita(int fcodice){
        CD a;
        for(int i=0;i<elencoCD.size(); i++)
        {
            a = elencoCD.get(i);
            if(fcodice ==a.getCodice())
                a.venduto();
        }
        numVendite++;
 
 
    }
    public CD getPiuVenduto(){ 
        CD piuvenduto = elencoCD.get(0);
        CD cd;
        for(int i=1; i<elencoCD.size();i++)
        {
         cd = elencoCD.get(i);
         if(piuvenduto.getVenduti()<cd.getVenduti())
             piuvenduto = cd;
        }
        return piuvenduto;
 
 
    }
    public int getVendite(){
        return numVendite;
    }
 
    public ArrayList<CD> getElencoOrdinato(){
        CD cd1=null;
        CD cd2=null;
        String autore1="",autore2="";
        int valore=0;
 
        for(int i=0; i<elencoCD.size()-1; i++) {
            cd1 = elencoCD.get(i);
 
            for(int j=i+1; j<elencoCD.size();j++) {
                cd2 = elencoCD.get(j);
                autore1 = cd1.getAutore();
                autore2 = cd2.getAutore();
                valore = autore1.compareTo(autore2);
                if(valore>1){
                    elencoCD.set(i,cd2);
                    elencoCD.set(j,cd1);
                }
            }
        }
        return elencoCD;        
    }    
}
Abbiamo provato ad implementare il metodo getElencoOrdinato(), ma č
sbagliato....
Grazieeee!!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Così a naso vai a prendere e rimmetere i cd dallo stesso array facendo un  
po' di confusione.
es.
partendo con d c b a
alla fine del primo ciclo avresti c b a d ma il prossimo elemento che  
andrai ad esaminare (cd1) sarà b, ti rimarrà per sempre c al primo posto.
Ci sono vari algoritmi per ordinare array ti consiglio di dare un occhiata  
qui e farti un idea:  
http://it.wikipedia.org/wiki/Categoria:Algoritmi_di_ordinamento
-- 
Manny Calavera
Mail To: anforagimailpuntocom²

Fortunatamente x noi non hai bisogno di ordinare una lista java
manualmente.
C'e' gia' una classe che lo fa x te, java.util.Collections.
Un suggerimento, a rischio di diventare pedante.. se provi a
programmare cosi' a "tentoni"
farai solo degli accrocchi. Leggiti un bel manuale java base da cima a
fondo.
Quanto al tuo prob, se fai in modo che la classe contenuta nell
arraylist mplementi l interfaccia
Comparable<T> puoi semplicemente chiamare il metodo Collections.sort
sull arraylist in questione.
puoi anche ordinare in maniera diversa. Basta crearsi una classe che
implementa Comparator<T>
e passare anche quella al metodo sort. allora la classe Collections
usera il metodo compare
contenuto nel comparator per fare i paragoni tra  gli oggetti.Ad
esempio, nel metodo "getPiuVenduto"
riordino la lista per numero di vendite decrescente.
ciao e buono studio...beati voi studenti eh :)
import java.util.*;
public class Negozio {
    private int numVendite =0;
    private ArrayList<CD> elencoCD;
    public Negozio() {
        elencoCD = new ArrayList<CD>();
    }
    public void addCD(CD fmycd){
        elencoCD.add(fmycd);
    }
    public void registraVendita(int fcodice){
        CD a;
        for(int i=0;i<elencoCD.size(); i++)
        {
            a = elencoCD.get(i);
            if(fcodice ==a.getCodice())
                a.venduto();
        }
        numVendite++;
    }
    public CD getPiuVenduto(){
        Collections.sort(elencoCD, new CDVenditeComparator());
        return elencoCD.get(0);
    }
    public int getVendite(){
        return numVendite;
    }
    public ArrayList<CD> getElencoOrdinato(){
        Collections.sort(elencoCD);
        return elencoCD;
    }
    public static void main(String[] args)
	{
		Negozio n = new Negozio();
		CD cd1 = new CD("Sting", 2134);
		cd1.setVenduti(23);
		n.addCD(cd1);
		CD cd2 = new CD("50 Cents", 5455);
		cd2.setVenduti(30);
		n.addCD(cd2);
		CD cd3 = new CD("Madonna", 6554);
		cd3.setVenduti(73);
		n.addCD(cd3);
		CD cd4 = new CD("Beethoven", 9134);
		cd4.setVenduti(0);
		n.addCD(cd4);
		for (CD c : n.getElencoOrdinato())
			System.out.println(c.getAutore());
		System.out.println("il piu venduto");
		System.out.println(n.getPiuVenduto().getAutore());
	}
}
class CD implements Comparable<CD>
{
    public int compareTo(CD other)
	{
		return this.autore.compareTo(other.autore);
	}
	private String autore;
    private boolean vend;
    private int venduti;
    private int codice;
	public CD(String autore, int codice)
    {
	    this.autore = autore;
	    this.codice=codice;
    }
	public int getCodice()
	{
		return codice;
	}
	public String getAutore()
	{
		return autore;
	}
	public void setAutore(String autore)
	{
		this.autore = autore;
	}
	public int getVenduti()
	{
		return venduti;
	}
    public void venduto()
    {
    	vend=true;
    }
	public void setVenduti(int i)
	{
		venduti=i;
	}
}
class CDVenditeComparator implements Comparator<CD>
{
	public int compare(CD cd1, CD cd2)
	{
		return cd2.getVenduti() - cd1.getVenduti();
	}
}

 
http://it.wikipedia.org/wiki/Categoria:Algoritmi_di_ordinamento
grazie dell'aiuto ...mi metterò a studiare!!!!


Complimenti ci siamo impazziti per tentare di ordinare array di
oggetti!....grazie 100000


 }
Grazie..sei stato gentilissimo!!!!!!!!!!
Ho provato e funziuona tutto corettamente!!!!


 manualmente.
Davo per scontato che l'esercizio consistesse proprio nello scrivere un  
algoritmo di ordinemento
