在哈希集中实现FIFO行为

Win*_*der 2 .net c# hashset data-structures

我有一个要求,其中集合中的每个元素必须是唯一的,为此我使用了一个hashset.

然而,我还想基于First In First我们的订单从hashset中删除元素.但是,.NET中的默认Hashset DataStructure没有此行为.

有没有办法扩展hashset来实现这种行为,或者我应该使用其他一些数据结构.

Mik*_*scu 5

您可以将哈希集与队列配对.哈希集将为您提供O(1)复杂度,以测试该元素是否在队列中,并且队列将为您提供先进先出行为,同样在O(1)中

如果您正在存储引用类型,则使用这两个数据结构的额外空间开销将是最小的(引用数量的两倍).

如果您正在使用值类型,则自平衡二进制搜索树将为您提供O(log n)中的查找和插入,但允许您仅存储每个元素的一个副本.