2

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

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

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

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

4

5 回答 5

4

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

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

这是简单的教程

编辑:

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

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

Stock是带有时间戳和股票代码的简单 POJO 类。

于 2012-11-28T19:13:47.463 回答
2

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

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

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

于 2012-11-28T19:13:57.830 回答
2

您可以使用股票 ID 的映射作为键,使用价格列表作为值。

Map<Integer, List<Price>> stocks = new HashMap<Integer, List<Price>>();
于 2012-11-28T19:14:06.467 回答
1

您可以使用 HashMap,其中键是 stockid,值是包含日期和时间的对象的数组列表。

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

于 2012-11-28T19:15:15.203 回答
1

您可以创建一个包含另一种类型的集合的哈希表。例如,如果您的股票 ID 是整数并且能够按时间顺序查看价格历史是您的主要用例,则创建一个数组列表的哈希表,并保持数组列表按日期排序:

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

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

HashMap< Integer, HashMap<Date, Stock> > stockCollection = new HashMap< Integer, HashMap<Date, Integer> >();
于 2012-11-28T19:24:19.110 回答