我的应用程序需要满足以下要求。我需要存储类似下面的订单:
- 每个订单都与特定的股票代码(字符串)相关联,并具有价格、数量和是否正在购买或出售(布尔值)等属性。 - 我需要对所有与特定股票有关的订单执行若干操作,例如获取股票代码为“abc”的订单总数量。 - 我需要能够向数据结构中添加订单。 - 我需要能够从数据结构中删除订单。 - 在添加或删除订单后,我需要知道哪个订单提供了最优价格。
目前,我的想法如下:
然后,我会将订单存储在一个Dictionary>中。其中,每个股票代码都是字典中的一个键,指向该股票的订单列表。我还会维护一个字典,将订单ID与股票代码匹配。
对于添加新订单,我只需根据当前股票代码在字典中找到相应的订单列表,并插入订单。我还会在orderstock字典中添加一个条目,将当前订单与适当的列表匹配。
要查找最佳价格,我会在字典中查找当前股票代码的订单列表,对列表进行排序并打印出最高订单。
删除操作比较棘手。首先,我需要按股票代码查找适当的列表。然后,我需要遍历该股票代码的所有订单,找到与当前订单ID匹配的订单并将其删除。如果当前股票代码有很多订单,则这显然效率低下。这是否是存储此信息的最佳方式?
- 每个订单都与特定的股票代码(字符串)相关联,并具有价格、数量和是否正在购买或出售(布尔值)等属性。 - 我需要对所有与特定股票有关的订单执行若干操作,例如获取股票代码为“abc”的订单总数量。 - 我需要能够向数据结构中添加订单。 - 我需要能够从数据结构中删除订单。 - 在添加或删除订单后,我需要知道哪个订单提供了最优价格。
目前,我的想法如下:
public class Order : IComparable
{
private string _StockCode;
private bool _BidSide;
private int _Volume;
private decimal _Price;
private int _ExchangeOrderId;
public int CompareTo(Order other)
{
if (_BidSide != other.BidSide)
{
return _BidSide ? 1 : -1;
}
return decimal.Compare(_Price, other.Price);
}
}
然后,我会将订单存储在一个Dictionary>中。其中,每个股票代码都是字典中的一个键,指向该股票的订单列表。我还会维护一个字典,将订单ID与股票代码匹配。
对于添加新订单,我只需根据当前股票代码在字典中找到相应的订单列表,并插入订单。我还会在orderstock字典中添加一个条目,将当前订单与适当的列表匹配。
要查找最佳价格,我会在字典中查找当前股票代码的订单列表,对列表进行排序并打印出最高订单。
删除操作比较棘手。首先,我需要按股票代码查找适当的列表。然后,我需要遍历该股票代码的所有订单,找到与当前订单ID匹配的订单并将其删除。如果当前股票代码有很多订单,则这显然效率低下。这是否是存储此信息的最佳方式?