【问题标题】:Hashset<string>contains for collectionHashset<string> 包含用于收集
【发布时间】:2013-12-01 16:45:48
【问题描述】:

我正在比较 2 个充满文件名的哈希集。我已经成功实现了“ExceptWith”,但现在我需要获取“两个集中的所有文件名”的列表。

我知道hashset 有一个contains ,但这意味着循环hashset 为另一个项目的每个项目。 想知道是否有内置的方法可以做到这一点。 我正在处理超过 50000 个文件名的文件。

非常感谢

【问题讨论】:

    标签: c#


    【解决方案1】:

    你说的是一个固定的交叉点。有一个内置的方法:

    HashSet<string> x = new HashSet<string> { "x", "a","b"};
    HashSet<string> y = new HashSet<string> { "z", "a","b"};
    x.IntersectWith(y);
    

    请注意,这会修改原始的 HashSet x。如果您不希望这样,请使用 Enumerable 上的扩展方法:

    var intersection = x.Intersect(y);
    

    由于最后一个被定义为IEnumerable&lt;T&gt; 的扩展,它也适用于更一般的情况。请注意,它的性能可能不如 HashSet&lt;T&gt;.IntersectWith 优化,因为它需要能够处理所有可枚举。

    【讨论】:

    • 嗨,这行得通。需要等待几分钟才能接受答案,但行得通。谢谢。
    猜你喜欢
    • 2014-07-11
    • 2014-12-30
    • 2015-01-30
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多