Мне нужно сохранить объекты действия, которые имеют свойство времени выполнения и ссылку на самого исполнителя (единицы). Когда блок выполняет действие, он получает добавление в PriorityQueue со временем, которое требуется для выполнения этого действия. Этому исполнителю не разрешается выполнять повтор, пока он не будет первым в списке. Я никогда раньше не работал с приоритетом, поэтому я не знаю о его возможностях.PriorityQueue правильная структура данных?
Итак, как это сделать? Давайте посмотрим на следующее отсортированное действии:
time:1600 -> unit:1
time:3700 -> unit:2
time:12000 -> unit:3
Теперь я хочу, чтобы получить доступ к этим структурам данных и снизить все эти time
свойства на 1600 и включите один блок выполнить снова. Если я продолжу добавлять вовремя, я скоро вступлю в максимум. Я мог бы использовать длинный, но в конечном итоге я столкнусь с той же проблемой. Во всяком случае, я думаю, для каждого типа я должен перебирать полный список или устанавливать для изменения свойств объекта в нем. При вставке я просто сравниваю время для быстрой вставки в структуру, такую как PriorityQueue.
Какую структуру данных я должен использовать для этого?
Но эта дельта или время растет бесконечно? Поскольку, когда я удаляю запись, эта единица должна вставить запись снова. Действия имеют фиксированное время. Итак, допустим, я удаляю первый 'delta = 1600', а затем создаю для него действие' time + delta'. Дельта будет расти бесконечно. – Madmenyo
Спасибо за редактирование, я думал об этом, но было непонятно, как фактически использовалась дельта. И PriorityQue - отличный выбор для этого права? – Madmenyo