Сортировка коллекции по дате - PullRequest
0 голосов
/ 22 марта 2012

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

public class DateComparator implements Comparator<MyList>{
    private static boolean isAscending;
    private static final String TAG = "DateComparator";


    public static boolean isAscending() {
        return isAscending;
    }


    public static void setAscending(boolean isAscending) {
        DateComparator.isAscending = isAscending;
    }


    @Override
    public int compare(MyList lhs, MyList rhs) {
        String pattern = "MM/dd/yyyy";
        try {
            String dueDateLHS = lhs.getDueDate();//some field are null
            String dueDateRHS = rhs.getDueDate();//some field are null

            if(dueDateLHS!=null && dueDateRHS!=null){
                SimpleDateFormat dateFormatLHS = new SimpleDateFormat(pattern);
                SimpleDateFormat dateFormatRHS = new SimpleDateFormat(pattern);
                Date dateLHS = dateFormatLHS.parse(dueDateLHS);
                Date dateRHS = dateFormatRHS.parse(dueDateRHS);
                if(isAscending) 
                    return dateLHS.compareTo(dateRHS);
                else 
                    return dateRHS.compareTo(dateLHS);
            }
        } catch (ParseException e) {
            Log.e(TAG, ""+e.getMessage());
            e.printStackTrace();
        }
        return -1;
    }

}

Как решить эту проблему?

1 Ответ

2 голосов
/ 22 марта 2012

Вы не обрабатываете случай, когда одна сторона равна нулю, а другая нет.Вам нужно добавить что-то вроде:

else if(dueDateLHS == null && dueDateRHS!=null){
  if(isAscending) { 
    return -1;
  } else 
    return 1;
  }
} else if (dueDateLHS != null && dueDateRHS==null){
//etc
} else if (dueDateLHS == null && dueDateRHS==null){
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...