我正在設計一個需要特定集合的系統,它是用Java編寫的。我需要存儲股票價格的歷史(日期和時間)。選擇正確的集合
一隻股票可以有多個日期和時間,因爲我想顯示以前的價格。
我將使用哪個集合將庫存標識映射到多個日期和時間?
我知道有HashTables,但我不明白他們將如何工作,因爲他們仍然只有一個鍵和一個值。我有一個股票類,其中我想要一個集合,需要一個價值和一個價值。
我正在設計一個需要特定集合的系統,它是用Java編寫的。我需要存儲股票價格的歷史(日期和時間)。選擇正確的集合
一隻股票可以有多個日期和時間,因爲我想顯示以前的價格。
我將使用哪個集合將庫存標識映射到多個日期和時間?
我知道有HashTables,但我不明白他們將如何工作,因爲他們仍然只有一個鍵和一個值。我有一個股票類,其中我想要一個集合,需要一個價值和一個價值。
一個選項將使用谷歌番石榴多圖(如果你可以包括第三方罐子)。
多地圖允許您添加具有相同密鑰的元素。
編輯:
如果不允許使用番石榴,那麼另一個選擇是:
HashMap<String, ArrayList<Stock>> map = HashMap<String, ArrayList<Stock>>()
這裏Stock
是時間戳和股票代碼簡單的POJO類。
謝謝,但沒有第三方的罐子!不知道他們到現在爲止存在,但他們絕對不會被允許。 –
假設你有一個Price
對象,那麼你可以使用的地圖是這樣的:
HashMap<String, ArrayList<Price>> map = HashMap<String, ArrayList<Price>>();
當然,你可以在你的密鑰類型更改爲自己。
您可以使用股票ID的關鍵圖和價格列表作爲價值。
Map<Integer, List<Price>> stocks = new HashMap<Integer, List<Price>>();
您可以使用HashMap,其中key將是stockid,value將是包含日期和時間的對象的數組列表。
Map<Integer, ArrayList<Price>> anyname = new HashMap<Integer, ArrayList<Price>>();
您可以創建一個包含其他類型的集合的哈希表。例如,如果你的股票ID是整數,並能夠看到價格的歷史時間順序是你的主要使用的情況下,創建的ArrayList的哈希表,並保持按日期排序的ArrayList:
HashMap< Integer, ArrayList<Stock> > stockCollection = new HashMap< Integer, ArrayList<Stock> >();
或者,如果您真的需要能夠在O(1)時間訪問特定日期的股票價格,創建哈希表的哈希表:
HashMap< Integer, HashMap<Date, Stock> > stockCollection = new HashMap< Integer, HashMap<Date, Integer> >();
您需要將信息存儲在內存(RAM)中?或者你想把它放在某種數據庫中?由於內存要求(假設無限量的內存不可用),將信息存儲在內存中將遲早會失敗。 – home
很好的問題,但這超出了系統的範圍。 –