Piccolo problema.
Tempo fa feci un esercizio basato sugli arrray…Avevo una classe chiamata “CanzoneItaliana” una “CanzoneStraniera” e un’altra “InnoNazionale” e tutte e tre le classi ereditavano dalla classe “Canzone” l’attributo “titolo”, grazie all’ereditarietà.
Questo esercizio doveva far in modo che potessi aggiungere, ricercare o eliminare delle canzoni inserite col metodo costruttore. Allora mi sono creato altre 2 classi, una chiamata archivio e una star.
Nella classe “Archivio” ho scritto il seguente codice:
*****************************
private Canzone[]archvio = new Canzone[4];
public void inserisciCanzone(Canzone canzone){
for(int i = 0; i < archivio.lenght; i++){
if(jukebox[i]==null){
jukebox[i] = canzone;
return;
}
}
*****************************
Mentre nella classe “Inizio” ho scritto il seguente codice:
mi sono creato un oggetto e poi ho chiamato il metodo inserisciCanzone;
oggetto.inserisciCanzone(new CanzoneItaliana(“Alba Chiara”,”Vasco”,”Rossi”,3);
oggetto.inserisciCanzone(new CanzoneStraniera(etc etc etc);
******************************
l’esercizio funziona correttamente.
Allora ho voluto fare lo stesso esercizio con le collection generic. >Ho lasciato le classi CanzoneItaliana,CanzoneStraniera;InnoNazionale,Can zone e nella classe Archivio ho scritto questo codice:
Collection <Canzone>archivio = new LinkedList <Canzone>();
public void inserisciCanzone(Canzone canzone){
for(int i = 0; i < archivio.size; i++){
archivio.add(canzone);
}
}
Quando vado a stampare le canzoni System.out.println(archivio); mi esce un casino…o mi stampa tutto su una riga, oppure mi stampa piu’ volte la stessa canzone…come mai?
Grazie in anticipo.