2011-11-20 41 views
1
public int compareTo(Object o) { 
    Doctor d = (Doctor)o; 
    return (doctor_name.compareTo(d.doctor_name)); 
} 

這是我在醫生級別可比TreeMap中不排序

jTextArea.setText(""); 
int doctor_id = Integer.parseInt(jTextField2.getText()); 
String doctor_name = jTextField3.getText(); 
String hospitalName = jTextField4.getText(); 

Doctor d = new Doctor(doctor_id,doctor_name,hospitalName); 
hmDoctor.put(doctor_id, d); 

這是我的HashMap

,這是我的樹地圖

TreeMap<Integer,Doctor> tmDoctor = new TreMap<Integer,Doctor>(hmDoctor); 
jTextArea.setText(""); 
Set keys = tmDoctor.keySet(); 
Iterator<Integer> ite = keys.iterator(); 

while(ite.hasNext()) 
{ 
    int doctorID = ite.next(); 
    Doctor d = tmDoctor.get(doctorID); 
    tmDoctor.put(doctorID, d); 
    jTextArea1.append(d.toString()); 
} 

它不分類醫生的名字。爲什麼?

回答

10

TreeMap根據它們的鍵而不是值對元素進行排序。 作爲一種替代方法,您可以使用由醫生姓名索引的TreeMap<String, Doctor>。 或者,根據你需要做什麼,你可以讓醫生在TreeSet

+1

我可以做到這一點與由doctorName設置的樹不是嗎? – snnlankrdsm

+0

如果你使用集合,它將是一個有序的醫生集合(你可能必須重寫'equals()'),這將允許測試,如'yourSet.contains(d)'。如果您按照名稱使用地圖,則可以使用'yourMap.get(「Gregory House」)'來獲取'Doctor'對象。 – Vlad

+0

private TreeMap tmDoctor = new TreeMap ();如果我這樣做,它現在的作品,但什麼是醫生類可比較的意義? – snnlankrdsm