选择正确的集合

时间:2012-11-28 19:11:41

标签: java collections

我正在设计一个需要特定集合的系统,它是用Java编写的。我需要存储库存价格的历史(日期和时间)。

一只股票可以有多个日期和时间,因为我想显示以前的价格。

我可以使用哪个集合将股票ID映射到多个日期和时间?

我知道有HashTables,但我看不出它们将如何工作,因为它们仍然只需要一个键和一个值。我有一个股票类,在其中我想要一个收集价值和价值的集合。

5 个答案:

答案 0 :(得分:4)

一种选择是使用谷歌番石榴多图(如果你可以包括第三方罐)。

multi-map允许您添加具有相同键的元素。

这是simple tutorial

修改

如果不允许使用番石榴,那么另一种选择是:

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

此处Stock是简单的POJO类,带有timeStamp和股票代码。

答案 1 :(得分:2)

假设您有一个Price对象,那么您可以使用这样的地图:

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

当然,您可以将密钥类型更改为您自己的密钥类型。

答案 2 :(得分:2)

您可以使用库存ID的映射作为键,并使用价格列表作为值。

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

答案 3 :(得分:1)

你可以使用HashMap,其中key是stockid,value是包含日期和时间的对象的arraylist。

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

答案 4 :(得分:1)

您可以创建包含其他类型集合的哈希表。例如,如果您的库存ID是整数,并且能够按时间顺序查看价格历史记录是您的主要用例,请创建一个arraylists哈希表,并按照日期对arraylists进行排序:

HashMap< Integer, ArrayList<Stock> > stockCollection = new HashMap< Integer, ArrayList<Stock> >();

或者,如果您确实需要能够在O(1)时间内访问特定日期的股票价格,请创建哈希表的哈希表:

HashMap< Integer, HashMap<Date, Stock> > stockCollection = new HashMap< Integer, HashMap<Date, Integer> >();