PDA

Visualizza la versione completa : [JAVA] ordinare un enumeration


maremma
02-01-2003, 15:52
Ciao a tutti,
inserisco un ResultSet in un HashTable,l'inserimento avviene seguendo
l'ordine progressivo dell'id, ma poi quando per la visualizzazione passo
tutto ad un Enumeration l'ordinamento viene sconvolto(parto dall'id 9, poi
c' l'8 ecc.).
Inseguito ho copiato l'Enumeration in Vector e fatto
Collections.sort(vector) ma in questo caso l'orinamento avviene per ordine
alfabetico.
Qualche consiglio?Si pu ordinare un Vector o un Enumeration per id?
Ho sbagliata l'accoppiata HashTable-Enumeration?
Qualche riga di esempio?

Zero-2
02-01-2003, 17:51
Allora che l'enumeration ti compaia in ordine disordinato normale.
Perchp quando inserisci un valore in un'HashTable , la sua posizione viene calcolato mediante la funzione Hash che restituisce un valore compreso fra 0 e il numero max di elementi presenti nella HashTable.
Per cui anche se tu inserisci in ordine i valori , questi vengono inseriti in posizioni casuali.
Quando fai l'enumeration l'hashTable ti restituisce i valori prendendoli in ordine di posizone dall'HashTable, dalla posizione 0 alla posizione y :)
Una prima soluzione per ordinarli dopo che li hai messi nel Vector quella di usare il metodo

sort(List list, Comparator c)

Dove oltre al vettore da ordinare devi passare l'istanza di una classe che estende l'interfaccia Comparator

che ha solo due metodi.


int compare(Object o1, Object o2)
Compares its two arguments for order.
boolean equals(Object obj)
Indicates whether some other object is "equal to" this Comparator.


devi ridefinire il metodo equals e compare :)
In pratica stabilisci tu come devono essere confrontati gli elementi del vettore.

Loading