Operaciones con conjuntos en C#.

En este post te voy a explicar como funcionan las operaciones con conjuntos en C#.

¿Qué es un conjunto?.

Un conjunto es una colección que solo albergar valores únicos. Es parecido a un diccionario, con la excepción que aquí no hay pares, únicamente keys. En .Net usamos la clase HashSet<T>  para representar un conjunto.

Con un conjunto puedes realizar ciertas operaciones, la mayoría de estas van a retornar otro conjunto.

Unión de conjuntos.

La unión de conjuntos A y B produce un tercer conjunto C con todos los elementos de A y B. Obvio, los  elementos repetidos de A y B únicamente van  a aparecer una vez.

Intersección de conjuntos.

La intersección de conjuntos A y B produce un tercer conjunto con nada más los elementos comunes de A y B. Esta es la operación opuesta a la diferencia simétrica.

Diferencia de conjuntos.

La diferencia de conjuntos A y B retorna un tercer conjunto con los elementos existentes en A que no existen en B.

Diferencia simétrica de conjuntos.

La diferencia simétrica de conjuntos A y B produce un tercer conjunto C con los elementos que no son comunes en A y B. La operación opuesta a la intersección.

Complemento de conjuntos.

El complemento de conjuntos son todos los elementos del universo que no están contenidos en el conjunto A.

Esta operación es difícil de replicar, en el contexto de programación no tenemos un concepto de universo. El universo de posibles elementos en un conjunto, es otro conjunto. Lo más cercano es la diferencia de conjuntos.

 

Producto cartesiano.

El producto cartesiano es una operación especial. No retorna otro conjunto, en su lugar retorna un listado de tuplas con todas las posibles combinaciones de un número N de conjuntos.

 

Conclusiones.

Todas las operaciones que menciono aquí pueden ser aplicadas a otras colecciones. La única diferencia con los demás componentes es que el HashSet está preparado para trabaja con valores únicos. Las otras colecciones disponibles en el runtime pueden contener elementos repetidos. Si requieres aplicar operaciones de conjuntos sobre otro tipo de colección, entonces, ten en cuenta el manejo de elementos repetidos.

Gustavo Sánchez
Últimas entradas de Gustavo Sánchez (ver todo)

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.