Каков наилучший способ обновить только определенные элементы в массиве после определенного времени? - PullRequest
1 голос
/ 02 июня 2019

Я спрашиваю, что лучше всего обновить набор данных через определенное время.

У меня есть массив объектов, каждый из которых имеет свою временную метку и другие переменные. Например, через 5 минут переменная одного из объектов должна быть автоматически изменена, а для другого элемента это может быть через 8 минут и т. Д.

Мое текущее решение состоит в том, чтобы иметь таймер, который запускает функцию каждые 15 секунд, чтобы сравнивать отметку времени каждого объекта в массиве с текущей отметкой времени, но это не может быть эффективным, особенно как массив растет в размерах.

Меня не волнуют особенности программирования, но какова абстрактная идея, как это реализовать?

Ответы [ 2 ]

2 голосов
/ 02 июня 2019

Использовать приоритетную очередь.Приоритетом каждого элемента является время, в которое должно быть выполнено его следующее обновление.Время O (log (N)), чтобы удалить следующий элемент из очереди, и время O (log (N)), чтобы повторно вставить элемент с его следующим временем выполнения.

1 голос
/ 02 июня 2019

Вы можете использовать HashMap для хранения объекта, используя метку времени объекта в качестве ключа. Это позволит вам получить доступ к объекту с O (1) временной сложностью.

...