Me gustaría saber, teniendo en cuenta que Clojure usa hash de 32 bits para su implementación del mapa, si el mapa Clojure tiene, por lo tanto, un límite de 2^32-1 claves (y si esto no es cierto, cómo gestiona colisiones) y si su implementación hash es consistent. TIA!Límites y coherencia del mapa de Clojure
Respuesta
mapas Clojure son una aplicación personalizada que es persistente e inmutable (es decir, no lo hace HashMaps uso de Java, que no proporcionarían un rendimiento suficiente cuando se utiliza en una estructura de datos inmutables).
Utiliza códigos hash de 32 bits, de ahí 2^32 posibles cubos hash. En el caso de colisiones, las claves y los valores se almacenan en una matriz para cada cubo hash, por lo que es posible tener más de 2^32 claves. Ver el PersistentHashMap source - en particular, la clase interna HashCollisionNode se usa para almacenar un cubo de claves/valores contra un único valor de código hash.
Dado que la cantidad de cubetas de hash posibles es fija, el hashing consistente es irrelevante; la clave nunca necesita ser reasignada.
Consulte también:
- http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey (presentación explicando enfoque Clojure a la concurrencia sino que también abarca las estructuras de datos inmutables persistentes)
¡Muchas gracias! –
- 1. Clojure constantemente mapa funcional y
- 2. Cambiando el comportamiento del mapa en Clojure
- 3. Google Maps API V3: limite los límites del mapa
- 4. Mapa límites Utilizando Android de Google Maps
- 5. clojure mapa Filtrar por teclas
- 6. ¿Un mapa bidireccional en clojure?
- 7. Clojure aplicar frente al mapa
- 8. mapa de clojure sobre secuencia de pares
- 9. Coincidir con el zoom/límites de un mapa MapKit con el zoom/límites de un mapa RouteMe
- 10. Clojure extrae el valor del mapa según la lógica priorizada
- 11. rareza en función de mapa clojure
- 12. ¿Cuál es el punto de la coherencia del caché?
- 13. Mapa reciente en clojure usando enfriamiento newtoniano
- 14. ¿Cómo reordenar un mapa en Clojure?
- 15. Detener el arrastre del mapa de Google fuera de los límites visuales
- 16. Obtener los límites de un mapa de Google v3 después del cambio de zoom
- 17. clojure 101 combinando vectores en un mapa
- 18. TSP - Sucursales y límites
- 19. iterar sobre mapa clojure pares (circular)
- 20. Cómo filtrar un mapa persistente en Clojure?
- 21. compruebe si los marcadores del mapa están dentro de los límites seleccionados
- 22. ImageView Pinch-zoom Límites de escala y límites de panorámica
- 23. Inicializando elementos de un mapa de forma condicional en Clojure
- 24. punto eficiente dentro de los límites del rectángulo de búsqueda
- 25. retorno de valores de mapa clojure en un orden específico
- 26. glibc Comprobación de coherencia de montón
- 27. Límites del soporte Unicode de Swing
- 28. ¿La función de mapa de clojure está ansiosa?
- 29. ¿Cómo llenar un registro de Clojure desde un mapa?
- 30. obteniendo los límites de una lista de puntos x, y
¿Has mirado en el código fuente? – pmdj
Sí, pero no puedo entenderlo completamente porque no soy un desarrollador de Java: por lo que he entendido, la función hash es hasheq, que delega a Entero en el caso particular de que la clave sea un Entero y al método Object hasheq. Pero no puedo entender (o rastrear) la función hash utilizada, si el mapa admite colisiones y si la función hash es consistente. –
(Nunca entenderé algunos votos a la baja) –