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.