AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

ordinamento arraylist

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
luisa
Guest





PostPosted: Sun May 13, 2007 9:12 pm    Post subject: ordinamento arraylist Reply with quote



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 abuse (AT) newsland (DOT) it
Back to top
Manny Calavera
Guest





PostPosted: Sun May 13, 2007 11:36 pm    Post subject: Re: ordinamento arraylist Reply with quote



In data Sun, 13 May 2007 18:12:27 +0200, luisa <oldricci (AT) tiscali (DOT) it> ha
scritto:

Quote:
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!!!!


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²
Back to top
Guest






PostPosted: Sun May 13, 2007 11:45 pm    Post subject: Re: ordinamento arraylist Reply with quote



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();
}



}
Back to top
luisa
Guest





PostPosted: Mon May 14, 2007 12:24 am    Post subject: Re: ordinamento arraylist Reply with quote

Quote:
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

grazie dell'aiuto ...mi metterò a studiare!!!!

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad abuse (AT) newsland (DOT) it
Back to top
PaoloXXX
Guest





PostPosted: Mon May 14, 2007 12:25 am    Post subject: Re: ordinamento arraylist Reply with quote

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


--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad abuse (AT) newsland (DOT) it
Back to top
luisa
Guest





PostPosted: Mon May 14, 2007 12:26 am    Post subject: Re: ordinamento arraylist Reply with quote

riccardo_at (AT) email (DOT) it ha scritto:

Quote:
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());
}

}


Quote:
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;


Quote:
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();
}



Quote:
}

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


--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad abuse (AT) newsland (DOT) it
Back to top
Manny Calavera
Guest





PostPosted: Wed May 16, 2007 6:53 pm    Post subject: Re: ordinamento arraylist Reply with quote

In data Sun, 13 May 2007 20:45:18 +0200, <riccardo_at (AT) email (DOT) it> ha scritto:

Quote:
Fortunatamente x noi non hai bisogno di ordinare una lista java
manualmente.

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

--
Manny Calavera
Mail To: anforagimailpuntocom²
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.