我正在设计一个需要特定集合的系统,它是用 Java 编写的。我需要存储股票价格的历史(日期和时间)。
一只股票可以有多个日期和时间,因为我想显示以前的价格。
我将使用哪个集合将股票 ID 映射到多个日期和时间?
我知道有 HashTable,但我看不出它们将如何工作,因为它们仍然只需要一个键和一个值。我有一个股票类,在其中我想要一个包含一个值和一个值的集合。
我正在设计一个需要特定集合的系统,它是用 Java 编写的。我需要存储股票价格的历史(日期和时间)。
一只股票可以有多个日期和时间,因为我想显示以前的价格。
我将使用哪个集合将股票 ID 映射到多个日期和时间?
我知道有 HashTable,但我看不出它们将如何工作,因为它们仍然只需要一个键和一个值。我有一个股票类,在其中我想要一个包含一个值和一个值的集合。
一种选择是使用谷歌番石榴多地图(如果您可以包含第三方罐子)。
multi-map 允许您添加具有相同键的元素。
这是简单的教程。
编辑:
如果不允许使用番石榴,那么另一种选择是:
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,其中键是 stockid,值是包含日期和时间的对象的数组列表。
Map<Integer, ArrayList<Price>> anyname = new HashMap<Integer, ArrayList<Price>>();
您可以创建一个包含另一种类型的集合的哈希表。例如,如果您的股票 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> >();