我在做一個頂部排隊。我使用數組還是數組列表?如果我正在製作一個固定大小的隊列,是陣列還是陣列列表?
1
A
回答
1
我不知道你所說的「上下」隊列的意思,而且也不穀歌,但在一般的數組是不是一個隊列一個不錯的選擇。在隊列中,您插入前面並從後面移除(FIFO)。在一個數組中,插入到數組的前面需要將現有數組中的所有元素複製到正確的數組中,這需要O(n)個時間。如果你在隊列中只有一些物品,那不是什麼問題,但是如果你有很多物品,那顯然是很浪費的。
頭和尾指針雙向鏈表會更好,但你應該只使用一個Queue代替。
0
取決於你如何去填充它:
如果你要填滿它以隨機順序,你可能是一個數組更好,否則我會從ArrayList中或列表去避免所有的「REDIM」 S。
1
如果你上面所說的它是固定的,即它總是將有多達10分的東西,我會使用一個數組,因爲數組是固定的,他們更容易操作。 ArrayList可以增長,但是它的API比數組小很多。
1
我會用ArrayList
,因爲它有效地與一個更好的API的數組。使用帶有initialCapacity
參數的構造函數,使其先行分配適量內存,並且不要調用任何會導致其自身大小調整的方法。
0
您可以使用LinkedBlockingQueue或ArrayBlockingQueue,它可以是有界的(固定大小)。數組可能是一個解決方案,但您需要重新實現隊列邏輯。列表不受限制,因此除非添加一些代碼,否則沒有任何東西阻止您將它們變得比預期的更大。隊列爲你做了這一切。
0
我不會使用數組或ArrayList
。我會用LinkedList
。你需要在後面插入並從前面移除,這些操作在數組上是O(n),而在鏈表上則是O(1)。
相關問題
- 1. 固定大小陣列
- 2. 固定大小的陣列不固定
- 3. 從另一個陣列製作陣列
- 4. 陣列具有固定間隔大小
- 5. 引用陣列到陣列的容量大小而不是實際的陣列
- 6. 陣列陣列是否正確?
- 7. 固定大小的FIFO隊列的正確術語是什麼?
- 8. 檢查陣列的列表的大小
- 9. 檢索值,如果值是一個列表/陣列
- 10. mysql更新表列如果一個固定列是重複的
- 11. C#列表,它是陣列
- 12. WorksheetFunction陣列大小限制
- 13. 環形陣列支持的隊列調整大小/排隊
- 14. 檢查另一個陣列列表中的陣列列表
- 15. 如何製作陣列陣列?
- 16. Postgres的追加或設定的每個元件(如果不是存在)的陣列的一個陣列列
- 17. 如何檢查是否$陣列=陣列(1){[「」] => NULL}是真的還是假
- 18. 創建新的2D陣列2D陣列的=大小1個+大小2D陣列2(行和列)
- 19. 陣列與每個陣列索引表是唯一
- 20. 如何將更大的陣列縮小爲更小的陣列?
- 21. 如何檢查較小陣列中的值是否在較大陣列中?
- 22. 調整大小的圓形陣列,在雙端隊列實施
- 23. 陣列Java的隊列
- 24. Underscore.js,測試整個陣列是否在另一個陣列中
- 25. 比較兩個陣列,其是在另一個陣列
- 26. 在不改變目標陣列大小的情況下將小陣列複製到較大陣列中
- 27. 指向在恆定大小2D陣列1D陣列
- 28. 二是從兩列MySQL表列陣列
- 29. 如果一些陣列是空的
- 30. 根據大陣列中另一個陣列的值對大陣列排序
爲什麼不直接使用[ArrayDeque(http://docs.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html)? – 2012-03-29 23:13:32
如果它是一個隊列,爲什麼不使用隊列?! – assylias 2012-03-29 23:15:31
@TedHopp,ArrayDeque調整自己以保存任意數量的元素。這個問題是關於一個固定大小的隊列。雖然ArrayDeque周圍的包裝器強制執行大小限制,但這可能是值得的。 – Wyzard 2012-03-29 23:19:30