有两个HashSet序列。我需要计算联合的结果。
它看起来应该像这样:
sequence1.UnionWith(sequence2);
return sequence1.Count;
但是我需要确保原始序列不会改变。
我使用了一个简单的搜索,但是它会使程序运行缓慢
var newHashkSet = new HashSet<string>(sequence1);
foreach (var s2 in sequence2.Where(s2 => newHashkSet.SingleOrDefault(x => x == s2) == null)) {
newHashkSet.Add(s2);
}
return newHashkSet.Count();
有没有更优雅的解决方案?
最佳答案
使用ImmutableHashSet
。
https://msdn.microsoft.com/en-us/library/dn467171(v=vs.111).aspx
根据定义,不可变的哈希集不会更改。当您形成两个不可变哈希集的并集时,结果是第三个不可变哈希集,而不是任何一个输入的突变。