我目前正在開發一個項目。我正在努力爲商店創建一個管理系統。問題是我需要某種庫存收集,在添加已存在的相同名稱的元素(更新相同項目的數量)時,它的狀態(屬性stockLevel)會根據給定的數量更新。有誰知道哪個應該是最好讓這樣的事情做? Map
,Set
或List
?最適合重複元素的Java集合
1
A
回答
3
那會a multiset (a.k.a. a bag)。您可以輕鬆地將自己的實現作爲一個Map<Item, Integer>
進行滾動,或者使用其中一個現有類,例如Google Guava的Multiset
。阿帕奇百科全書集合也有一個,所以做的Eclipse收藏等
1
其中,同時增加已使用相同的名稱 (更新同一項目的數量)它的狀態(屬性stockLevel) 會相應地更新存在的元素給定數量
在你的用例,Map
是很好的儲存信息:
Map<Product, StockLevel>
的代表與關鍵Product
和值它的數量的地圖在股票:StockLevel
對於迭代在地圖上,您不能保留插入順序與HashMap
,但爲您的需要,它不應該是一個問題。
不過,如果你想保持插入順序,當你重複它,或者你想要的地圖根據一些需要(按字母順序或其他方式)進行排序,你可以使用更復雜的地圖,如TreeMap
或LinkedHashMap
0
設置不允許重複的值,但這不是一個解決方案。如果你插入一個重複的值,它將被忽略。您可以選擇一個項目列表,然後循環查找重複項。可以添加一個if條件來增加它的狀態。
+0
當你可以在一個集合或映射中查找產品時,爲什麼要迭代一個列表?沒有理由保留多個項目,只是他們的相關數據。 –
相關問題
- 1. java獨特元素集合
- 2. 帶有重複/重複元素的Python「集合」
- 3. 集合元素的組合
- 4. 去除元素的最佳集合
- 5. java streams - 從值集合使用條件的值集合元素
- 6. Java:刪除集合中的元素
- 7. 適合命名輸入元素的嵌套集合
- 8. 什麼是適合存儲少量元素的集合類型?
- 9. 父元素內的適合元素
- 10. 可重複排序的Java集合
- 11. 最適合Java的HTTP庫?
- 12. 最適合Java的iCalendar庫?
- 13. 從Arrays.asList創建的存儲重複元素的集合
- 14. 複合JavaScript元素
- 15. Java獲取集合的最後一個元素
- 16. 在同一個集合中複製arraylist的元素java
- 17. Backbone集合中的最後一個元素添加/重置?
- 18. 如何查詢集合的複合元素? (不能創建元素加入非實體的集合)
- 19. MongoDB - 最適合複合索引?
- 20. 哪個Java集合最適合這種情況
- 21. 在Java中刪除集合中重複的最佳方法?
- 22. 集合,沒有重複,並在Java中
- 23. 確定當前元素是集合的最後一個元素?
- 24. 使ul元素適合div
- 25. XSLT:組合元素不重複
- 26. Python代碼結合重複元素
- 27. 沒有重複元素的列表元素的所有組合
- 28. 將通用集合的元素複製到C中的另一個集合中#
- 29. 子集和組合元素
- 30. 配置元素集合節
希望很明顯,列表並不合適。看起來像一個集合或一個地圖將是最有意義的,不是?它的種類取決於你想如何訪問它。 –
@DaveNewton提及添加重複值。根據定義,Set不適用於這種情況,至少沒有比它們的名稱屬性更復雜的方式執行不同的元素。 –
你能定義你的「狀態」嗎?特別是爲什麼它嵌入在對象中? – fge