PDA

View Full Version : Java ordinare un hastable


texerasmo
19-12-2006, 09:29
Hashtable ht = new Hashtable();
ht.put("server2", "2");
ht.put("server1", "1");
ht.put("server3", "3");

// Enumeration enump = ht.;

// Sort hashtable.
Vector v = new Vector(ht.keySet());
Collections.sort(v);

// Display (sorted) hashtable.
for (Enumeration e = v.elements(); e.hasMoreElements();) {
app_chiave = (String)e.nextElement();
app_valore = (String)ht.get(app_chiave);
System.out.println("app_chiave: " + app_chiave + " app_valore: " + app_valore);
}


vorrei ordinare questo hashtable.


Ordinamento funziona solo per chiave, io vorrei ordinarlo per valore
mi potete dare un mano?

andbin
19-12-2006, 10:17
vorrei ordinare questo hashtable.


Ordinamento funziona solo per chiave, io vorrei ordinarlo per valore
mi potete dare un mano?Hashtable (così come HashMap e HashSet) è una collezione "unsorted" e "unordered".

Una cosa che puoi fare se vuoi elencare i valori in modo ordinato è la seguente (ci sono sicuramente anche altri modi):
ArrayList al = new ArrayList (ht.values ());
Collections.sort (al);ht è la Hashtable. Dopodiché fai una iterazione sui valori nel ArrayList.

pisto
19-12-2006, 12:45
se ho capito bene questa (http://java.sun.com/javase/6/docs/api/java/util/TreeMap.html) potrebbe farti comodo

andbin
19-12-2006, 13:03
se ho capito bene questa (http://java.sun.com/javase/6/docs/api/java/util/TreeMap.html) potrebbe farti comodoTreeMap è una "map" (quindi associativa) ma è anche "ordered" in base all'ordine "naturale" o ad un Comparator. L'ordinamento però è sulla chiave.
texerasmo voleva, da quanto ho capito, fare un ordinamento dei valori.

texerasmo
20-12-2006, 14:00
Grazie funziona.