 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
luisa Guest
|
Posted: Sun May 13, 2007 9:12 pm Post subject: 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 abuse (AT) newsland (DOT) it |
|
| Back to top |
|
 |
Manny Calavera Guest
|
Posted: Sun May 13, 2007 11:36 pm Post subject: Re: ordinamento arraylist |
|
|
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
|
Posted: Sun May 13, 2007 11:45 pm Post subject: Re: ordinamento arraylist |
|
|
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
|
Posted: Mon May 14, 2007 12:24 am Post subject: Re: ordinamento arraylist |
|
|
| 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
|
Posted: Mon May 14, 2007 12:25 am Post subject: Re: ordinamento arraylist |
|
|
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
|
Posted: Mon May 14, 2007 12:26 am Post subject: Re: ordinamento arraylist |
|
|
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();
}
|
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
|
Posted: Wed May 16, 2007 6:53 pm Post subject: Re: ordinamento arraylist |
|
|
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 |
|
 |
|
|
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
|
|