Non cambia la situazione con HashSet, in pratica io devo riempire una jList con i dati provenienti da un ResultSet che ha questa forma:

codice:
ID_MAL, MALATTIA
2, Bronchite 
22, Celiachia 
23, Diabete
Il metodo che riempe la jlist è il seguente:
codice:
private void creaLista(ResultSet cursore, String tipo) throws SQLException {
// ...
        int i = 0;
        Set lista = new HashSet();
            cursore.beforeFirst();
            // finchè il cursore può avanzare, aggiungi il nome della malattia alla var lista
            // e aggiungi il rispettivo id della malattia alla variabile lista_id
            while(cursore.next()) {
                    lista.add(cursore.getString("MALATTIA"));
                    lista_id.add(cursore.getString("ID_MAL"));
            }
            // calcola la dimensione della variabile lista e converto il tutto in 2 array
            int size = lista.size();
            String[] array = (String[])lista.toArray(new String[lista.size()]);
            String[] array_id = (String[])lista_id.toArray(new String[lista_id.size()]);
            
            // finchè gli elementi della lista non sono finiti
            // aggiungi la coppia "malattia id_mal" nella jlist 
            while(i < size){
                    lstMalMod.addElement(array[i]+" "+array_id[i]);
                    i++;
            }
}
Fin qui sembrerebbe non esserci nulla di anormale, ma, benchè il resultSet che passo al metodo non ha nessun tipo di ordinamento le stringhe nella jList risultano:

codice:
Bronchite 2 (esatto per pura coincidenza)
Diabete 22 (doveva essere 23 non 22)
Celiachia 23 (doveva essere 22 non 23)
Notare che le associazioni tra la malattia e l'id della malattia stessa sono completamente diverse da quelle corrette che erano nel ResultSet.