如何有效地查找一组数组中的哪个数组有成员

时间:2015-04-08 03:17:32

标签: arrays algorithm messaging

如何有效地查找数组列表中的哪个数组具有成员。

上下文用于消息代理。我有一个队列列表,需要定期将其内容推送给消费者,但由于队列数量可能很大,我想快速找出其中有哪些元素。

我目前唯一的解决方案是基本上保留一个单独的列表,跟踪哪个数组仍然包含其中的内容,但对备选方案感到好奇,它只会让我感到害怕;)

我正在使用javascript,但我希望能更全面地了解我应该研究哪种算法。

1 个答案:

答案 0 :(得分:0)

我将使这种与语言无关,并使我的答案简短明了。

维护并行数据结构:另一个存储数组ID的集合,但仅存储非空的数组

  • 制作新(空)数组时,只将其添加到第一组。
  • 当您添加到数组时,如果它还没有,请将其添加到第二组。
  • 从数组中删除时,如果数组现在为空,请将其从第二组中删除。
  • 删除数组时,请将其从第一组中删除(如果有,则删除第二组)。

如果您在第二组中使用哈希集,则插入和删除时间不会发生变化。这是人们可以要求的最有效的事情,这种类型的混合数据结构是必要的AFAICT。

然后,您可以通过迭代第二组来查找所有非空数组。