我有以下数据类型:
ISet<IEnumerable<Foo>>
所以,我需要能够创建序列集。例如,这没关系:
ABC,AC,A
但这不是(因为这里重复了“AB”):
AB,A,ABC,BCA,AB
但是,为了做到这一点 - 为了“设置”不包含重复项,我需要将我的数据包装IEnumerable
在某种其他数据类型中:
ISet<Seq>
//where
Seq : IEnumerable<Foo>, IEquatable<Seq>
因此,我将能够比较两个序列,并为 Set 数据结构提供一种消除重复的方法。
我的问题是:是否有允许比较序列的快速数据结构?我在想,以某种方式Seq
创建或添加两个时,会计算某种累积值。
换句话说,是否有可能以我可以这样做的方式实现 Seq:
var seq1 = new Seq( IList<Foo> );
var seq2 = new Seq( IList<Foo> )
seq1.equals(seq2) // O(1)
谢谢。