Una ArrayList ordinata

Da Head First Java O'Reilly, capitolo 16 che tratta collezioni e programmazione generica.

Una operazione tipica che viene richiesta sulle collezioni é l'ordinamento. La collezione che abbiamo utilizzato prevalentemente in Head First Java é ArrayList, un array esteso di elementi non ordinati. Consideriamo un caso in cui siamo richiesti di leggere una serie di stringhe (titoli di brani musicali) e di presentarli in ordine alfabetico.

Abbiamo fondamentalmente un paio di alternative: o utilizziamo una collezione diversa, che mantenga i propri elementi in ordine, o applichiamo un ordinamento agli elementi della collezione.

La seconda alternativa é preferibile se la nostra collezione é tutto sommato statica, con pochi inserimenti. Se questo é il caso, possiamo utilizzare il metodo statico sort() della classe Collections per riorganizzare gli elementi come richiesto.

Vediamo un esempio:

package Chap16;

import java.util.*;

public class JukeBox {
private ArrayList<String> songs = new ArrayList<String>();

public JukeBox() {
getSongs();
System.out.println(songs);
Collections.sort(songs);
System.out.println(songs);
}

public static void main(String[] args) {
new JukeBox();
}

private void getSongs() {
// fake implementation
String[] fakeList = {"Pink Moon/Nick Drake", "Somersault/Zero 7",
"Shiva Moon/Prem Joshua", "Circles/BT (Brian Wayne Transeau)",
"Deep Channel/Afro Celts", "Passenger/Headmix", "Listen/Tahiti 80"};
for(String s : fakeList) {
System.out.println(s);
String[] tokens = s.split("/");
songs.add(tokens[0]);
}
}
}

Il metodo getSongs() simula la gestione dell'input da una fonte esterna di una lista di titoli e autori divisi dal carattere /. Qui ci interessano solo i titoli, facciamo dunque uno split di ogni stringa e prendiamo solo la prima parte per metterla nella collezione di canzoni.

Dopo aver caricato i brani eseguiamo una sort e vediamo come effettivamente l'operazione funzioni.

Nessun commento:

Posta un commento