私のアプリケーションの要件は次のとおりです。次のような注文を保存する必要があります。
各注文は特定のストックコード(文字列)に関連し、価格、ボリューム、およびそれに関連付けられた購入または販売(ブール)かどうかがあります。
特定の在庫に関連するすべての注文に対していくつかの操作を実行する必要があります。たとえば、在庫コード「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に一致する注文を見つけて削除する必要があります。現在の銘柄コードの注文が多い場合、これは明らかに非効率的です。これは、この情報を保存するための最良の方法ですか?