我正在设计一个需要特定集合的系统,它是用Java编写的。我需要存储库存价格的历史(日期和时间)。
一只股票可以有多个日期和时间,因为我想显示以前的价格。
我可以使用哪个集合将股票ID映射到多个日期和时间?
我知道有HashTables,但我看不出它们将如何工作,因为它们仍然只需要一个键和一个值。我有一个股票类,在其中我想要一个收集价值和价值的集合。
答案 0 :(得分:4)
一种选择是使用谷歌番石榴多图(如果你可以包括第三方罐)。
multi-map允许您添加具有相同键的元素。
修改强>
如果不允许使用番石榴,那么另一种选择是:
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> >();