наиболее эффективный объект хранения данных для постановки в очередь максимального количества элементов - PullRequest
1 голос
/ 10 января 2011

Мне нужен тип хранилища, для которого я могу установить максимальное количество элементов, и всякий раз, когда я добавляю что-то к хвосту, голова усекается по мере необходимости с минимальными накладными расходами.Конечно, я могу сделать это вручную, если придется.Пример

max = 1000

заполните его целыми числами 1-1000: [1,2, ..., 999,1000]

добавьте числа 1000 - 1500: [500,501, ...., 1499,1500]

Операция должна быть настолько дешевой, насколько это возможно, так как в настоящее время я буду запускать несколько потоков, один из которых будет записывать аудио.Меня не волнует сохранение элементов заголовка при их выталкивании, я хотел бы избавиться от них в массовой операции.

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

Спасибо за любую помощь

1 Ответ

1 голос
/ 10 января 2011

Использовать кольцевой буфер, также известный как круговая очередь;они могут быть реализованы как массивы, поэтому они особенно дешевы.См. этот вопрос для реализации в Java.

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