2012-11-28 68 views
2

我正在設計一個需要特定集合的系統,它是用Java編寫的。我需要存儲股票價格的歷史(日期和時間)。選擇正確的集合

一隻股票可以有多個日期和時間,因爲我想顯示以前的價格。

我將使用哪個集合將庫存標識映射到多個日期和時間?

我知道有HashTables,但我不明白他們將如何工作,因爲他們仍然只有一個鍵和一個值。我有一個股票類,其中我想要一個集合,需要一個價值和一個價值。

+0

您需要將信息存儲在內存(RAM)中?或者你想把它放在某種數據庫中?由於內存要求(假設無限量的內存不可用),將信息存儲在內存中將遲早會失敗。 – home

+0

很好的問題,但這超出了系統的範圍。 –

回答

4

一個選項將使用谷歌番石榴多圖(如果你可以包括第三方罐子)。

多地圖允許您添加具有相同密鑰的元素。

這是simple tutorial

編輯:

如果不允許使用番石榴,那麼另一個選擇是:

HashMap<String, ArrayList<Stock>> map = HashMap<String, ArrayList<Stock>>() 

這裏Stock是時間戳和股票代碼簡單的POJO類。

+0

謝謝,但沒有第三方的罐子!不知道他們到現在爲止存在,但他們絕對不會被允許。 –

2

假設你有一個Price對象,那麼你可以使用的地圖是這樣的:

HashMap<String, ArrayList<Price>> map = HashMap<String, ArrayList<Price>>(); 

當然,你可以在你的密鑰類型更改爲自己。

2

您可以使用股票ID的關鍵圖和價格列表作爲價值。

Map<Integer, List<Price>> stocks = new HashMap<Integer, List<Price>>(); 
1

您可以使用HashMap,其中key將是stockid,value將是包含日期和時間的對象的數組列表。

Map<Integer, ArrayList<Price>> anyname = new HashMap<Integer, ArrayList<Price>>();

1

您可以創建一個包含其他類型的集合的哈希表。例如,如果你的股票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> >();