Creo que la alternativa es usar add
.
Desde el docs:
añade el elemento especificado a este conjunto si no está ya presente (opcional operación ). Más formalmente, agrega el elemento especificado e a este conjunto si el conjunto no contiene ningún elemento e2 tal que (e == null? E2 == null: e.equals (e2)). Si este conjunto ya contiene el elemento , la llamada deja el conjunto sin cambios y devuelve falso.
Sin embargo, en realidad no puedo decir de su pregunta si usted está tratando de actualización o sustitución un elemento. Cuando cambia la propiedad de un elemento, esos cambios se reflejan automáticamente en el Set
porque el conjunto contiene referencias, por lo que no es necesario actualizar . Si intenta reemplazar un elemento diferente, un método replace
sería redundante como se explica en Stephen C.
(después de la pregunta de edición)
E1 y E2 son diferentes instancias, pero iguales.
Sugiero que implemente la igualdad en Element
. De esta manera, el método add
comprueba la existencia de un elemento no por referencia (el valor predeterminado Object.equals
), sino por su concepto de igualdad en Element
. Entonces, incluso si las referencias de e1 y e2 son diferentes, e1.equals(e2) == true
.
¿El tipo de 'elemento 'es tal que dos instancias del tipo son" iguales "en lo que respecta al método igual() pero no son" iguales "de alguna otra manera que sea importante para el programa? –
el elemento en la instrucción add es diferente de las instrucciones contains y remove? –
@Martijn Courteaux: incluso si se usa la misma instancia en esas tres llamadas a funciones, podría haber una instancia diferente que se almacena en el conjunto y es "igual a" 'elemento'. Parece que el OP quiere reemplazar la instancia actualmente en el conjunto con una instancia diferente, "igual". Diría que la razón por la que no existe un método para hacer lo que se desea es porque ese no es el uso típico, o posiblemente sugerido, de Set. –