¿Hay alguna diferencia práctica entre un Set
y Collection
en Java, además del hecho de que un Collection
puede incluir el mismo elemento dos veces? Ellos tienen los mismos métodos.cuándo usar Set vs. Collection?
(Por ejemplo, ¿Set
me dan más opciones para utilizar las bibliotecas que aceptan Set
s pero no Collection
s?)
edición: puedo pensar en por lo menos 5 situaciones diferentes para juzgar esta cuestión. ¿Alguien más puede venir con más? Quiero asegurarme de que entiendo las sutilezas aquí.
- diseñar un método que acepta un argumento de
Set
oCollection
.Collection
es más general y acepta más posibilidades de entrada. (si estoy diseñando una clase o interfaz específica, estoy siendo más amable con mis consumidores y más estricto con mis subclasistas/implementadores si usoCollection
.) - diseñando un método que arroja
Set
oCollection
.Set
ofrece más garantías queCollection
(incluso si es solo la garantía de no incluir un elemento dos veces). (si estoy diseñando una clase o interfaz específica, estoy siendo más amable con mis consumidores y más estricto con mis subclasistas/implementadores si usoSet
.) - diseñando una clase que implementa la interfaz
Set
oCollection
. Problemas similares al # 2. Los usuarios de mi clase/interfaz obtienen más garantías, los subclassers/ejecutores tienen más responsabilidad. - diseñando una interfaz que amplía la interfaz
Set
oCollection
. Muy similar a # 3. - código de escritura que utiliza un
Set
oCollection
. Aquí también podría usarSet
; las únicas razones para que useCollection
es si obtengo unCollection
del código de otra persona, o si tengo que manejar una colección que contiene duplicados.
buena pregunta, pero las respuestas no son buenas – Kemoda