gpt4 book ai didi

c# - 存储有序的字典 - 数据结构

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:40 26 4
gpt4 key购买 nike

我经常收到一些订单,我需要存储它们并从中构建一个聚合。订单将有一个 ID,并且会有一个与之关联的工具类型。订单还可以附加一些事件,比如添加、更新或删除。如果是更新事件,那么订单将不会附加工具类型,但订单 ID 将相同。例如:如果我有订单 ID 为 100 的工具“xyz”的订单,稍后我可以获得一个事件以将 ID 为 100 的订单更新 20 美元,并且该事件不会出现工具类型(命令)。

收到订单后,我需要为独特的工具建立一个订单簿,例如工具“xyz”应该在订单簿中包含所有收到的订单。

我的问题是我如何有效地存储它以及我应该为它使用什么样的数据结构?

订单看起来像这样:

public class Order
{
public Order(Action add, int id, string instrument, int price)
}

订单簿:

public class OrderBook
{
public string Instrument;
public List<Order> AllOrders;
}

选项 1:

更新 Dictionary<int,OrderBook>当我收到订单时,将 key 作为订单 ID,并为该工具创建一个订单簿。

问题:这将处理更新事件,我可以检查订单是否已经存在,然后更新订单簿。然而,一种工具类型应该只有一个订单簿,而这里违反了这个条件,对于工具“xyz”,可能有多个添加订单通过,也使操作变得困难。

选项 2:

更新字典Dictionary<OrderBook, List<int>> ,值为订单 ID。

问题:这将解决上述问题,但是当我收到更新事件时,我必须检查每个值列表(即订单 ID 列表)以查看是否订单已经存在,因为工具类型将是空的,我无法通过 OrderBook 键查看。

订单是实时下达的,存储和检索的操作必须更高效一些(如果不是 O(1) 那么 O(logn)),请问有没有更好的方法来构造它?

注意:OrderBook 是一种工具的所有订单的集合,并且对于该工具是唯一的。一个订单将以特定价格购买一种工具,并且将有许多订单用于相同的工具。 我从其他人(第三方库)那里获得订单和事件,我负责构建订单簿。

最佳答案

我将此问题视为两个子问题的组合。

  1. 您正在跟踪输入的 OrderID。
  2. 您为每件商品维护唯一的订单簿。

在这种情况下,我建议同时维护这两个词典或者,您可以转换 List<order>dictionary <int, order>在订单簿中以简化订单簿的搜索。

对于选项1,你提到

However an instrument type should only have one order book, and this condition is violated here

您不会有多个订单簿,而是在字典条目中维护同一订单簿的引用。

关于c# - 存储有序的字典 - 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com