Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 35
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Casi imposible y si te encuentras con uno, el acceso sigue siendo súper efectivo.
La colisión en cualquier nivel de eficiencia es mala. Gracias por la respuesta. Lo tendré en cuenta.
La colisión en cualquier nivel de eficiencia es mala. Gracias por su respuesta. Lo tendré en cuenta.
Los Hashmaps no son, por definición, libres de colisiones.
Pregunta sobre las colisiones. ¿Es posible que se produzca una colisión en ese caso?
Si se han producido 27.000 registros.
Se producirán constantemente colisiones, especialmente cuando la colección crezca (cambie de tamaño). Ya que el hash se trunca adicionalmente al número de la banda, y siempre hay un número limitado de ellos (idealmente igual a uno).
Conclusiones:
1. No es la estabilidad criptográfica de la función hash lo que importa para el mapa, sino su velocidad. La función hash sólo tiene que proporcionar una buena aleatoriedad y ya está.
2. Es mejor evitar el cambio de tamaño por todos los medios. Es el cambio de tamaño lo que provoca la principal reducción, no las colisiones de la función hash. Siempre que sea posible, inicialice la colección con un número preestablecido de elementos. Aunque no los conozca con exactitud, dé una cifra aproximada: ayudará mucho al algoritmo.
3. Las colisiones son un mecanismo de compactación habitual. A través de colisiones, es posible almacenar tres registros con id, digamos, 159, 4'569'209, 29'459'876 en un array de longitud tres, en lugar de longitud 30 000 000, incluso si los dos últimos valores caen ambos en la banda con índice 2.
2. Es mejor evitar el cambio de tamaño por todos los medios. El principal inconveniente es el cambio de tamaño, no las colisiones de la función hash. Siempre que sea posible, inicialice la colección con un número preestablecido de elementos. Aunque no los conozcas con exactitud, da una cifra aproximada: será de gran ayuda para el algoritmo.
Por favor, muéstrelo con un ejemplo.
Sólo uso esto hasta ahora.
Por favor, muéstrame un ejemplo.
Sólo uso esto hasta ahora.
Cuando crees una colección CHashMap, utiliza uno de los constructores que acepta el parámetro de capacidad. Consulte mi artículo sobre CDicionary para obtener detalles sobre el rendimiento durante el redimensionamiento. Hay un recorrido completo de este algoritmo.
He encontrado un comportamiento muy inusual en CHashMap.
Parece que supuestamente se añade una clave, pero no se puede leer nada de ella. Sin embargo, en cuanto se vuelve a añadir la clave, ¡se puede leer!
¿Esto es una bolsa?
Si sustituye el precio1,75141 del ejemplo por otro, funcionará correctamente.
Fue infernalmente difícil detectar este comportamiento en un código enorme sin depurar y crear un ejemplo tan conciso.
Siempre que sea posible, inicialice la colección con un número predeterminado de elementos. Aunque no los conozcas con exactitud, da una cifra aproximada: será de gran ayuda para el algoritmo.
En el ejemplo anterior he intentado establecer la capacidad a través del constructor. A partir de un determinado valor de capacidad, el ejemplo empieza a funcionar correctamente.
Pero creo que esto es una coincidencia.
He encontrado un comportamiento muy inusual en CHashMap.
Parece que supuestamente se añade una clave, pero no se puede leer nada de ella. Sin embargo, en cuanto se vuelve a añadir la clave, ¡se puede leer!
¿Esto es una bolsa?
Si sustituye el precio1,75141 del ejemplo por otro, funcionará correctamente.
Fue infernalmente difícil detectar este comportamiento en un código enorme sin depurar y crear un ejemplo tan conciso.
Corregido, estará en la versión de hoy.
Gracias. Veo la edición.
En el ejemplo anterior, intenté establecer la capacidad a través del constructor. A partir de un determinado valor de capacidad, el ejemplo empieza a funcionar correctamente.
Pero creo que esto es una coincidencia.
Sí, hay un fallo tras otro. Le aconsejo encarecidamente que no utilice el Genérico.