【发布时间】:2014-12-29 23:35:57
【问题描述】:
来自证券交易所的股票更新流以股票代码、买入/卖出对(例如 YHOO,300)的形式出现(以非常高的速率)。我们必须始终显示在任何给定时间点按交易量计算的前 5 名交易量最高的股票。您将如何在内存中维护这些值?
我的想法是使用哈希图(Ticker->Volume)从提要 O(1) 更新我们的数据存储。然后根据交易量创建一个 Treemap 以显示前 5 个股票 O(1)。但是我想不出一种有效的方法来同步 Treemap 数据,因为 hashmap 中的值发生变化(非常频繁)。 有什么建议吗?
【问题讨论】:
-
“我们必须始终显示在任何给定时间点按交易量计算的前 5 名交易量最高的股票”您的窗口有多长?那天前五?过去 30 秒的前五名?
-
在那个特定时刻的前五名(这经常变化)。您可以假设窗口为 1 秒。这是一个实时输入流。
-
所以如果您在 3 秒前看到 1000 笔 ABC 交易和 1 秒前 XYZ 交易,您只想显示 XYZ?
-
累计到一天结束。
标签: java data-structures