2012-07-10 11 views
8

Suponiendo que se desea implementar conceptos de la teoría de conjuntos como element, set, collection y relation en Java: ¿Cómo representar el conjunto vacío ?¿Cómo implementar el conjunto vacío - ∅?

¿Me engaño, si pienso en el concepto NULL, ya que es utilizado por la lógica de tres valores de las bases de datos?

+4

No estoy seguro de que haya una única respuesta a esta pregunta; depende de lo que quieres lograr La respuesta obvia es "usar un' conjunto 'vacío', pero' NULL' también podría ser apropiado dependiendo de lo que esté haciendo. –

+4

Hay miles de maneras de representar el conjunto vacío, dependiendo de la aplicación prevista. 'Establecer = nuevo HashSet ()' es uno de los más simples. –

+4

Collections.emptySet() me viene a la mente ... –

Respuesta

27

Uso Collections.emptySet():

Devuelve el conjunto vacío (inmutable). Este conjunto es serializable. A diferencia de el campo con el mismo nombre, este método está parametrizado. Este ejemplo ilustra la forma en de tipo seguro para obtener un conjunto vacío:

Set<String> s = Collections.emptySet(); 

Nota de implementación: Las implementaciones de este método no es necesario crear un objeto de conjunto separado para cada llamada. Es probable que usar este método tenga un costo comparable al usando el campo con el mismo nombre. (A diferencia de este método, el campo no proporcionan la seguridad de tipos.)

+0

Gracias por su sugerencia. Usaré tu consejo. – M4TT4CK

8

Usando null para representar un conjunto vacío es una mala idea . Un null no se comporta como un Set porque (obviamente) todos los intentos de realizar una operación en él arrojarán un NullPointerException. Eso significa que si usa null para denotar un conjunto vacío, su código estará lleno de pruebas para null ... y si pierde una, tiene un error.

La solución es usar Collections.emptySet() si desea un conjunto vacío inmutable, o crear una instancia de la clase Set adecuada si desea un conjunto mutable que comience en vacío.

+0

+1 para indicar por qué el nulo es una mala idea. –

Cuestiones relacionadas