PDA

Visualizza la versione completa : [JAVA] Ordinare una Hashtable


albyherminator
09-03-2006, 18:12
Volevo chiedervi questa cosa:
ho necessità di creare una JComboBox ordinata per descrizione (label).
questa combo viene popolata leggendo un file contentete stringhe in questo modo:
chiave1|descrizion1
chiave2|descrizion2
chiave3|descrizion3
....

come si può capire, selezionando un valore all'interno della combo, ho bisogno di risalire alla "chiave".
Io ho pensato di caricare il tutto in una Hashtable, dove nel primo parametro del metodo "put" inserisco la "chiave" in modo che è univoca, nel secondo parametro inserisco un oggetto bean.
dove "objectName" è la "chiave1...2...3...", "objectLabel" è la "decscrizione1...2...3...":

public class SamObject
{
private String objectName;
private String objectLabel;

public SamObject(String objectName, String objectLabel) {
__this.objectName = objectName;
__this.objectLabel = objectLabel;
}


public String getObjectLabel()
{
__return objectLabel;
}


public String getObjectName()
{
__return objectName;
}
}


La mia Hashtable sarà quindi strutturata così:
"chiave1", new SamObject(objectName, objectLabel)
"chiave2", new SamObject(objectName, objectLabel)
"chiave3", new SamObject(objectName, objectLabel)
...

Nella combo vedo visualizzato solo le descrizioni, la popolo nel seguente modo:
...
jComboBox = new JComboBox(hashSamObject.values().toArray());

e con il metodo JComboBox.getSelectedItem() risalgo al bean, che mi serve per recuperare la chiave.
...
//recupero il nome del'oggetto in base alla selezione della combo
SamObject samObject = (SamObject) jComboBox.getSelectedItem();
return ((samObject == null) ? "" : samObject.getObjectName());

solo che non riesco ad ordinare per descrizione la Hashtable; su internet ho girato un po' e fanno esempi che da una table estraggono valori_e li mettono in una lista ordinata, ma non ordinano la table stessa!
mi sapete dare qualche dritta?
thx

floyd
09-03-2006, 21:01
usa una TreeMap che è ordinata

albyherminator
10-03-2006, 00:04
si ma io non voglio ordinare sulla chiave, così lo sapevo anche io.
il mio obiettivo è ordinare sul secondo oggetto della Hashtable, e nelllo specifico sulla variabile objectLabel

floyd
10-03-2006, 10:33
edit

capito
il TreeSet ordina per elemento ma non puoi mettere una chiave, potresti aggiungere la chiave all'elemento se la struttura dell'applicazione te lo permette

albyherminator
10-03-2006, 15:26
ti ringrazio ma ho fatto in altro modo ed ho risolto il problema usando un vector e i comparable

Loading