Recientemente le pregunté acerca de las claves compuestas en mapas en clojure: How can you implement Composite keys in clojure? ...¿Cuál es el equivalente de clojure de anular "iguales" en java?
La respuesta fue que funcionan de manera similar a las teclas de Java - si algo anula "es igual a", entonces puede ser utilizado eficazmente como una clave.
Me preguntaba: ¿Hay macros que nos permitan anular "iguales" para estructuras de datos personalizadas? Por ejemplo, supongamos que quería usar un mapa como clave y definir la exclusividad como "si este mapa contiene dos o más elementos en común con otro mapa, son iguales". ¿Cómo podría anular el comportamiento predeterminado de un mapa?
En Java, considero que esta instalación es bastante poderosa cuando se hacen mapas de alta velocidad con miles de frijoles como claves.
Reemplazar equivalentes está bien siempre y cuando anule también su función de hash.No es una locura en absoluto: un buen diseño estándar y común. Cualquier buen programa GUI/tipo de pelusa le recordará que anule uno si anula el otro. Usar el comparador es un patrón algo más desagradable, ya que exporta conocimiento de su clase a otro (el comparador) –
Esto parece un poco de choque de paradigmas. Algunos piensan "objetos independientes, pregúntales si son iguales" mientras que otros piensan "composición de valores inmutables" donde la idea de los iguales es universal. –
No estoy en contra de anular a todos, obviamente es necesario en Java. Anularlo * en la forma en que pregunta * es una idea terrible, porque es imposible escribir una función 'hashCode' que esté en línea con la decisión de hacer que' igual' devuelva verdadero para cualquier mapa que comparta al menos dos claves con este . – amalloy