从一个Hashset中删除不在另一个Hashset中的元素
本文关键字:Hashset 另一个 元素 删除 一个 | 更新日期: 2023-09-27 18:09:29
我知道hashsetA.Except(hashsetB)
从hashsetA
中删除存在于hashsetB
中的元素。然而,我想从hashsetA
中删除不存在于hashsetB
中的元素。
目前我只是复制hashsetA
到一个新的Hashset
,然后使用ExceptWith()
两次:
hashsetC = new HashSet<var>(hashsetA);
hashsetC.ExceptWith(hashsetB);
hashsetA.ExceptWith(hashsetC);
这个性能对于我的目的来说已经足够好了,但是我想知道是否有一个内置的方法来使这个更快/更简洁?还是我遗漏了一个从集合中进行选择的明显方法?
直接使用IntersectWith
方法。
hashsetA.IntersectWith(hashsetB);
res = hashsetA.Where(p=> hashsetB.Contains(p)).
如果在Hashset中查找是O(1),那么它的和应该是O(n)。