Я хочу, чтобы мой массив сортировался, год не имеет значения месяц и день . Я хочу, чтобы самая близкая дата указана в 0, а самая дальняя дата .
Вам нужно будет сортировать на основе месяц и день первый: При сравнении любых двух Дата ঃ
сортировать список Дата:
- Сравните месяц и если они не равны возврат разница (месяц1 - месяц2) в качестве результата сравнения
- Если месяц равен доходности разницы дня месяца в результате сравнения
Так compareTo(Date o)
функция реализованного Comparable<Date>
будет выглядеть так:
@Override
public int compareTo(Date o) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(this.date);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(o);
int month1 = cal1.get(Calendar.MONTH);
int month2 = cal2.get(Calendar.MONTH);
if(month1 < month2)
return -1;
else if(month1 == month2)
return cal1.get(Calendar.DAY_OF_MONTH) - cal2.get(Calendar.DAY_OF_MONTH);
else return 1;
}
После сортировки вы просто могли бы закруглить список, думая, что это круговое. Например предположим, отсортированный список (за исключением года, как это не имеет значения):
JAN 20, FEB 5, SEP 18, OCT 9, OCT 20, NOV 23
Если наш стержень (Замкнутая дату по сравнению с датой) является OCT 11
выбор немедленного больше (наименьший срок больше, чем стержень) дата это будет OCT 20
. Вы можете найти его только с помощью цикла for.Теперь нам просто нужно округлить думая, что это замкнутый круг:
OCT 20, NOV 23 --> JAN 20, FEB 5, SEP 18, OCT 9
Формально найти индекс i
немедленного увеличения даты по сравнению с нашим шарниром, основываясь на месяц и день (попробуйте использовать пример CompareTo), а затем создать новый список, введите элемент, начинающийся с индекса i
, до n-1
, а затем 0
- i-1
, здесь n
- это размер списка дат.
реализовать компаратор и использовать сравнения(). вы можете добавить логику, чтобы игнорировать год и просто проверить месяц и дату. – TheLostMind
Хорошо, позвольте мне проверить это. – User3
Вы можете попробовать реализовать компаратор и проверить свою дату в '' public int compare (T o1, T o2) '', используя '' Days.daysBetween (date1, date2) '' – hbsrud