【发布时间】:2017-03-26 17:03:10
【问题描述】:
有两个 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();
有没有更优雅的解决方案?
【问题讨论】:
-
“原始序列不变”是什么意思?根据定义,哈希集是无序的。另请参阅Does HashSet preserve insertion order?。
-
我的意思是使用sequence1.UnionWith(sequence2) 后sequence1 发生变化