c#中是否有等价于HashSet的adrange ?



使用列表可以:

list.AddRange(otherCollection);

HashSet中没有添加范围方法。将ICollection添加到HashSet的最佳方法是什么?

对于HashSet<T>,名称为UnionWith

这是为了表明HashSet工作的不同方式。您不能像Collections那样安全地将一组随机元素Add放入其中,有些元素可能会自然蒸发。

我认为UnionWith得名于"与另一个HashSet合并",然而,IEnumerable<T>也有过载。

这是一个方法:

public static class Extensions
{
    public static bool AddRange<T>(this HashSet<T> source, IEnumerable<T> items)
    {
        bool allAdded = true;
        foreach (T item in items)
        {
            allAdded &= source.Add(item);
        }
        return allAdded;
    }
}

您也可以在LINQ中使用CONCAT。这将把一个集合或HashSet<T>附加到另一个集合上。

    var A = new HashSet<int>() { 1, 2, 3 };  // contents of HashSet 'A'
    var B = new HashSet<int>() { 4, 5 };     // contents of HashSet 'B'
    // Concat 'B' to 'A'
    A = A.Concat(B).ToHashSet();    // Or one could use: ToList(), ToArray(), ...
    // 'A' now also includes contents of 'B'
    Console.WriteLine(A);
    >>>> {1, 2, 3, 4, 5}

注意: Concat()创建一个全新的集合。此外,UnionWith()比Concat()更快。

, …这(Concat())还假设您实际上可以访问引用哈希集的变量并允许修改它,但情况并非总是如此。"——@PeterDuniho

相关内容

  • 没有找到相关文章

最新更新