我的申请要求如下。我需要存储如下所示的订单:
每个订单都与特定的股票代码(字符串)相关,并具有与其相关的价格、数量以及是否被买入或卖出(布尔值)。
我需要对与特定股票相关的所有订单执行多项操作,例如获取股票代码“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<string, List<Order>> 中。每个股票代码都是字典中的一个键,指向该股票的订单列表。我还将维护将订单 ID 与股票代码匹配的字典。
要添加新订单,我只需根据当前股票代码在字典中找到适当的订单列表,然后插入订单。我还将在 orderstock 字典中添加一个条目,将当前订单与适当的列表匹配。
为了找到最好的价格,我在字典中查找当前股票代码的订单列表,对列表进行排序并打印出最高的订单。
删除很棘手。我首先需要按股票代码查找适当的列表。然后,我需要遍历该股票代码的所有订单,并找到与当前订单 ID 匹配的订单并将其删除。如果当前股票代码有很多订单,这显然是低效的。这是存储这些信息的最佳方式吗?