powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Cобственные "правила округления" java :)
8 сообщений из 8, страница 1 из 1
Cобственные "правила округления" java :)
    #39338258
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам себе задачку придумал, хотелось бы реализовать, но как-то не сталкивался с подобным.
Имеем массив, который содержит перечень минут.

Integer[] minutesArray = new Integer[]{0, 10, 15, 20, 30, 40, 50};

И вот начал писать метод, который в зависимости от текущего времени должен возвращать одно из значений этого массива.
Пока корявенько его назвал и он пока возвращает только текущее значение минут.
На всякий случай поясню: текущее время 21:12:36:154, возвращаемое значение будет 12 это в методе ниже

Код: java
1.
2.
3.
4.
5.
public static Integer getCurrentMinuteRoundedToNumInArray(Date date) {
        SimpleDateFormat dformat = new SimpleDateFormat("mm");
        Integer currentMinute = Integer.valueOf(dformat.format(date));
        return currentMinute;
}



Вот думаю, как бы поаккуратнее написать так, что если сейчас 12 минут, то возвращается 10,
если 13, то 15,
если 36, то 40 и т.д.
Пока пришло в голову только перелопатить в цикле массив и вычитать из данных массива текущее значение минут, при минимальном "отклонении" брать это значение массива и возвращать его. Может еще есть варианты?
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338314
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начните с изучения Java 8 date time API. А то больно смотреть на такие методы. Выравнивание обязательно по массиву должно быть?
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338322
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу поиска ближайшего значения есть масса вариантов оптимизаций. Начать с хотя бы бинарного поиска. Самым быстрым решением может быть массив в 60 элементов. Ведь минут всего 60. Для гипотетически очень длинной минуты можно ещё подумать над вариантами.
Для длинной минуты можно было бы построить индекс чтобы по значению быстро найти подмасссив для поиска.
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338334
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПо поводу поиска ближайшего значения есть масса вариантов оптимизаций. Начать с хотя бы бинарного поиска. Самым быстрым решением может быть массив в 60 элементов. Ведь минут всего 60. Для гипотетически очень длинной минуты можно ещё подумать над вариантами.
Для длинной минуты можно было бы построить индекс чтобы по значению быстро найти подмасссив для поиска.

Тут даже не 60, а максимум 12 значений от 0 до 55 через каждые 5 минут(может вообще 4 будет: 0, 15, 30, 45). Выравнивание обязательно по массиву, да.
Просто делаю выпадающий список(комбобокс в vaadin) в котором будет 6-9-12 значений времени, которые пользователь будет выбирать ручками. Все потому что стандартный в 60 минут он ппц какой длинный и как кастомизировать сам компонент я не нашел. Вообще.
После инициализации этого компонента ему нужно сразу присвоить какое-то значение setValue(int), взять минуты у new Date(), сравнить со значениями в массиве и в нем выбрать наиболее близкий вариант и присвоить компоненту.
Java 8 date time API, вскоре гляну, мне оно не срочно, главное чтобы красиво было как решение. Поиски тоже гляну, давно уже с ними не сталкивался да и не часто и вообще забыл их суть )) спасибо, пошел читать :)
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338336
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас ещё и фиксированный интервал, то совсем не интересно. Даже массив не нужен. Обычного деления достаточно.
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338361
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕсли у вас ещё и фиксированный интервал,
А ведь по началу было 0,10,15,20 :)
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338461
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА ведь по началу было 0,10,15,20 :)
Ну, да. Вот я и подумал, что задача гипотетическая. Потому как для реального мира совсем просто.
...
Рейтинг: 0 / 0
Cобственные "правила округления" java :)
    #39338492
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСергей АрсеньевА ведь по началу было 0,10,15,20 :)
Ну, да. Вот я и подумал, что задача гипотетическая. Потому как для реального мира совсем просто.
Ну и в реальном мире бывают задачи поиска ближайшего соседа.
Хотя задача запуска каждую n-ю минуту попроще.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Cобственные "правила округления" java :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]