多集合订单

时间:2014-08-14 19:31:46

标签: android collections

我有一个这样的对象:

class User {
     String row;
     String tipo_ing;
     String name;
}

我使用此代码创建不同的顺序: 按tipo_ing排序

Collections.sort(Ingred, new Comparator<User>(){
                                  public int compare(User emp1, User emp2) {
                                    return emp1.getTipoIng().compareToIgnoreCase(emp2.getTipoIng());
                                  }
                                }); 
通过tipo_ing创建第一个订单后可以

,按名称创建“子订单”吗?

2 个答案:

答案 0 :(得分:1)

如果您的意思是子订单

  当Users相等时,

name排序tipo_ing

然后答案是

由于Java使用Mergesort来排序Object的集合,这是一个stable排序算法,您可以这样做:

Collections.sort(users, BY_NAME);
Collections.sort(users, BY_TIPO_ING);

达到以下顺序:

tipo_ing name
X        Alice
X        Bob
Y        Eve
Y        Mallaroy

答案 1 :(得分:0)

compare方法中,只需检查两个typo_ing是否相同。如果是,请在name上进行比较:

public int compare(User emp1, User emp2) {

  int diff = emp1.getTipoIng().compareToIgnoreCase(emp2.getTipoIng());

  if (diff == 0) {
    return emp1.getName().compareToIgnoreCase(emp2.getName());
  }

  return diff;
}