【问题标题】:collections.sort compare selectItemcollections.sort 比较 selectItem
【发布时间】:2016-02-25 18:09:52
【问题描述】:

我有一个问题,我希望你能帮助我, 我有一个要订购的 SelectItem 列表

初始顺序是: 格希登 雷迪格
不为人知的
验证
逐句验证

我将列出如下列表: 雷迪格 真实性 格希登 威威
不客气

我有方法实现,但我没有正确的顺序:

公共列表 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;
    }

以及这个方法的结果: 雷迪格 真实性 格希登 不为人知的
逐句验证

缺少什么??

谢谢你

【问题讨论】:

    标签: sorting collections compare


    【解决方案1】:

    compare 方法应该告诉我们,在我现在比较的两个项目中,哪个应该先出现?负数表示第二项在前,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));
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多