2015-07-15 1 views
10

Я ищу структуру данных, которая ведет себя как очередь (это может быть реализация очереди), но позволяет мне получить несколько элементов из коллекции (пример: первые 15 элементов очереди).Есть ли коллекция, которая ведет себя как очередь, но позволяет мне получать сразу несколько элементов одновременно?

Было бы очень приятно, если бы не требовались новые зависимости.

Есть ли что-нибудь подобное?

Чем ближе я получил во время своих исследований, тем был BlockingQueue с методом drainTo(), но это не то, что мне нужно.

+0

Я бы создал свой собственный метод, который вызывает опрос x times (данный как параметр) и возвращает новую коллекцию (я не знаю, предлагает ли NimChimpsky то же самое из-за его постоянных изменений, но это в значительной степени способ пойти) – vefthym

+0

Почему, по-вашему, вам это нужно, а не просто повторять? – chrylis

ответ

8

LinkedList реализовать очередь, сбор и список.

Вы можете использовать poll для головы или получить sublist для первых 15 элементов, а затем также removeRange, чтобы удалить их.

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

+0

Я все еще думаю об этом или вызываю несколько раз queue.poll(), как вы предлагали ранее. Преимущество queue.poll() заключается в том, что мне не нужно обрабатывать случай, когда очередь меньше размера пакета и что мне не нужно обрабатывать удаление элементов вручную. Я не уверен, какой код выглядит лучше. Я выполняю некоторые тесты производительности на данный момент – JSBach

+0

@JSBach Я предполагаю, что разница в производительности будет небрежной, посмотрите на источник подсписок и removeRange - я думаю, что нужно перебирать элементы. – NimChimpsky

+0

Хорошо, круто. На самом деле removeRange защищен, поэтому я не могу его использовать. Я должен был бы назвать sublist (...). Clear(). Во всяком случае, я буду повторять опрос 15 раз. Спасибо за вашу помощь, как можно скорее я пометю его как ответ – JSBach

Смежные вопросы