2015-11-23 91 views
0

我有一個問題,我希望你能幫助我, 我有了SelectItem的列表orderncollections.sort比較選擇信息

的inital順序是: geschieden ledig
unbekannt
verheiratet
verwitwet

,我會名單,如: ledig verheiratet geschieden verwitwet。 unbekannt

我有方法implementiert但我不噸有正確順序:

公共列表getFamilienstandSelectItems()
{
列表getFamilienstandSelectItems = TK_Familienstand_DS_Values.getInstance()getSelectItems();

 Collections.sort(getFamilienstandSelectItems , new Comparator<SelectItem>() 
      { 
            public int compare(SelectItem s1, SelectItem s2) 
       { 

        if (s1.getLabel()=="ledig") 
        { 
         return 0;} 
        else if (s1.getLabel()=="verheiratet") 
        { return 0;} 
         else if (s2.getLabel()=="geschieden") 
         { return 1;}    
        else if (s2.getLabel()=="unbekannt") 
         { return -1;} 
         else if (s2.getLabel()=="verwitwet ") 
         { return 0;} 

       else return 1; 


        } }); 


    return getFamilienstandSelectItems; 
    } 

這種方法的結果: ledig verheiratet geschieden unbekannt
verwitwet

缺少了什麼?

謝謝

回答

0

的比較方法應該告訴我們,這兩個項目是我現在比較,哪一個應該放在第一位的?負數表示第二項應該優先,0表示它們相等,正數表示第一項應該優先。

所以給每個項目鍵入一個數字,並創建一個功能

public int getPriority(SelectItem item) { 
    // Give higher values to the items that should come first 
} 

,然後做這樣的事情在您的比較方法

public int compare(SelectItem s1, SelectItem s2) { 
    return Integer.compare(getPriority(s1),getPriority(s2)); 
}