Как лучше всего определить, является ли коллекция дат ежемесячной или ежедневной? - PullRequest
2 голосов
/ 09 января 2012

Мне интересно, как лучше всего, учитывая объекты TreeSet of Date, определить, являются ли эти даты ежедневными или ежемесячными. Обратите внимание, что набор ежедневных дат не будет содержать даты выходных или праздничных дней. Набор месячных дат будет иметь даты окончания месяца. Набор дат будет длиться несколько лет.

Единственный способ, которым я могу сейчас придумать, - это взять первые 12 дат из набора и проверить месяц каждой даты. Если месяц встречается более одного раза подряд, то это, вероятно, будет набор ежедневных дат. Если нет, то можно предположить, что это набор месячных дат.

Хотя кажется, что это должно работать (я не могу вспомнить ни одного крайнего случая, который бы он пропустил), мне было интересно, есть ли более элегантное решение? Я хотел бы представить какую-то структуру данных (дерево?), Которая использует компаратор на основе месяца и года. Тогда, если поддерево этой коллекции содержало более одного узла, я мог бы предположить, что это были ежедневные даты. Я не уверен, что этот способ потребует дополнительного кода или есть лучшее решение. Спасибо за любую помощь, вы можете дать мне.

1 Ответ

1 голос
/ 09 января 2012

Единственный способ, которым я могу сейчас придумать, - это взять первые 12 дат из набора и проверить месяц каждой даты. Если месяц встречается более одного раза подряд, то это, вероятно, будет набор ежедневных дат. Если нет, то можно предположить, что это набор месячных дат.

Это не обязательно сработает.

Возможно, вам придется проверять каждую дату в наборе, чтобы определить, является ли дата днем ​​недели и днем ​​конца месяца ... или обоими !!

Вы можете остановиться, когда найдете день недели, который не является днем ​​конца месяца, или наоборот , но программа защиты проверит их все, если вы были неверный ввод.

Вы не получите никакого выигрыша в производительности от того факта, что коллекция является TreeSet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...