Existe um equivalente AddRange para um HashSet em c #


306

Com uma lista, você pode fazer:

list.AddRange(otherCollection);

Não há método de adição de intervalo em um HashSet . Qual é a melhor maneira de adicionar outra coleção a um HashSet?

Respostas:


547

Pois HashSet<T>, o nome é UnionWith.

Isso é para indicar a maneira distinta de HashSettrabalhar. Você não pode seguramente Addcriar um conjunto de elementos aleatórios, como Collectionsalguns elementos, naturalmente podem evaporar.

Eu acho que UnionWithleva esse nome depois de "mesclar com outro HashSet", no entanto, também há uma sobrecarga IEnumerable<T>.


9
Imho, HashSet(e ISet) foi criado com o termo definido matematicamente. UnionWithfoi o termo mais próximo. Exceto por Except, que claramente deve ser nomeado como Subtract, matematicamente falando.
precisa saber é

5

Esta é uma maneira:

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;
    }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.