2014-03-20 4 views
1

мне нужно заказать список объектов, первый по дате и по дате по имени .. как пример ниже с помощью компаратора:объектов для заказа по компаратору

- 19/03/2014 Anna Hatta 
- 19/03/2014 Keller Jay 
- 20/03/2014 Anna Hatta 
- 20/03/2014 Keller Jay 
- 20/03/2014 Zoner Charley 

Я знаю, как сделать заказ по дате и по имени отдельно, например:

public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() { 
    public int compare(Prospect p1, Prospect p2) { 
     int res = p2.getDate().compareTo(p1.getDate()); 
     return res; 
    } 
}; 

Но как я могу объединить эти 2 и сделать вложенный заказ?

CHEERS!

+1

просто CONCAT их и сравнить, как одну строку, но сделать дату как дд/мм/гггг – Autocrab

ответ

2
public static Comparator<Prospect> DATE_NAME_PROSPECTS = new Comparator<Prospect>() { 
    public int compare(Prospect p1, Prospect p2) { 
     int res = p1.getDate().compareTo(p2.getDate()); 
     return res == 0 ? p1.getName().compareTo(p2.getName()) : res; 
    } 
}; 
0

В компараторе сравнить (...), сначала сравнить более важные критерии. Если вы получите 0 (равный), возвращаемое значение получается по менее важным критериям.

Таким образом, вы можете иметь вложенный порядок сортировки с несколькими уровнями иерархии, если это необходимо.

0
public static Comparator<Prospect> DATE_ORDER_PROSPECTS = new Comparator<Prospect>() { 
    public int compare(Prospect p1, Prospect p2) { 
     int res = p2.getDate().compareTo(p1.getDate()); 
     if(res == 0) { 
      p2.getName().compareTo(p1.getName()); 
     } 
     return res; 
    } 
}; 
Смежные вопросы