2015-07-15 9 views
10

Szukam struktury danych, która zachowuje się jak kolejka (może to być implementacja kolejki), ale pozwala mi pobrać wiele elementów z kolekcji (przykład: pierwsze 15 elementów kolejki).Czy istnieje kolekcja, która zachowuje się jak kolejka, ale pozwala mi uzyskać wiele elementów jednocześnie?

Byłoby bardzo miło, gdyby nie wymagało nowych zależności.

Czy jest coś takiego?

Im bliżej byłem podczas moich badań, to BlockingQueue z metodą drainTo(), ale to nie jest to, czego potrzebuję.

+0

Stworzyłbym własną metodę, która wywołuje ankietę x razy (podaną jako parametr) i zwraca nową kolekcję (nie wiem, czy NimChimpsky sugeruje to samo, ze względu na jego ciągłe zmiany, ale to jest dość droga) – vefthym

+0

Dlaczego uważasz, że potrzebujesz tego zamiast po prostu wielokrotnie? – chrylis

Odpowiedz

8

LinkedList kolejka wdrożenia, kolekcja i lista.

Można uzyskać poll dla głowy lub uzyskać sublist dla pierwszych 15 elementów, a następnie również removeRange, aby je usunąć.

Prawdopodobnie wybrałbym 15 razy, ponieważ podlista/removeRange będzie musiała i tak w jakiś sposób powtórzyć elementy, dlatego też materiał perfromancji będzie podobny.

+0

Nadal o tym myślę lub wzywam wielokrotnie metodę queue.poll(), jak zasugerowałeś wcześniej. Zaletą kolejki.poll() jest to, że nie potrzebuję obsługiwać sprawy, że kolejka jest mniejsza niż wielkość partii i że nie muszę obsługiwać ręcznego usuwania elementów. Nie jestem pewien, który kod wygląda lepiej. Przeprowadzam testy wydajności w tej chwili – JSBach

+0

@JSBach Wyobrażam sobie, że różnica w wydajności byłaby pomijalna, spójrz na źródło podlist i removeRange - myślę, że muszę iterować po elementach. – NimChimpsky

+0

OK, fajnie. W rzeczywistości removeRange jest chroniony, więc nie mogę go używać. Musiałbym wywołać podlistę (...). Clear(). W każdym razie, powtórzę ankietę 15 razy. Dzięki za pomoc, tak szybko jak to możliwe, zaznaczę ją jako odpowiedź – JSBach

Powiązane problemy