2015-11-23 50 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)); 
}