Tecnología

Inicio

¿Por qué una cadena inmutable calcular su valor hash?



Las aplicaciones Java componentes de código modelo como objetos, con cada objeto que tiene un área de responsabilidad. Los objetos proporcionan métodos para llevar a cabo sus responsabilidades. Algunos métodos en Java son implementados por todos los objetos posibles, incluyendo cadenas. El marco de Java permite a los desarrolladores usar ciertos tipos de estructura de almacenamiento de datos, algunos de los cuales utilizan los valores de hash de código para almacenar artículos. Un valor hash de código utiliza un código para hacer referencia a un objeto específico, lo que permite la clase de colección para implementar métodos eficientes para el almacenamiento de varios objetos dentro del programa. código Java puede calcular los valores hash de código para todos los objetos, incluyendo cuerdas, que son inmutables.

contenido de la serie

Las variables de cadena en los programas Java son objetos de la clase String, almacenar secuencias de caracteres de texto. Esto puede ser confuso, ya que los programas crean variables de cadena utilizando el mismo tipo de estructura utilizada para las variables de tipos simples, tales como números. El siguiente código de ejemplo muestra la creación de una variable de cadena:
string name = "Juan";

El programa se puede llevar a cabo los métodos de la clase String en esta variable, algunos de los cuales implican la alteración del contenido del texto. Los métodos que alteran el contenido de una cadena normalmente devuelven una nueva cadena, en lugar de la alteración de la cadena existente. Esto se debe a que las cadenas son inmutables, lo que significa que una vez que se crea una variable de cadena, su contenido no puede ser alterado. Programas en los que aparece el contenido de una cadena a ser alterados son en realidad la creación de nuevas cadenas para reemplazar los ya existentes.

Función HashCode

Todos los objetos de Java proporcionan la función "hashCode". Esto es porque todas las clases de Java heredan de la superclase Object, que proporciona el método "hashCode". El siguiente código de ejemplo muestra una llamada al método de la variable de cadena:
name.hashCode ();

Llamar a este método Java para generar un valor hash-código para la variable de cadena especificada. La creación de un valor hash-código para un objeto de cadena implica el mismo proceso que se uso para cualquier objeto.

Resultado

El método "hashCode" se traduce en un valor entero que representa el objeto en cuestión. Este número permite que las clases Java para optimizar la eficiencia en la hora de almacenar los valores de datos, en particular en relación con la clase HashMap u otras clases de colecciones relacionadas. En la mayoría de los casos, un programador de Java no tiene que preocuparse por los detalles de los números que se utilizan como códigos hash para artículos tales como cadenas, como las clases de colecciones manejar este detalle.

Igualdad

El resultado de llamar al "código hash" en dos elementos que son iguales debe ser el mismo número. Por ejemplo, las dos variables de cadena siguientes deben generar el mismo valor hash-código:
Algunnombre cadena = "Juan";
OtherName cadena = "Juan";

Si dos objetos devuelven un resultado verdadero cuando se utiliza dentro del método es igual, entonces Java considera que son iguales, en cuyo caso deberán traducirse en el mismo hash-código. Por ejemplo, el siguiente código resultaría en un valor verdadero:
boolean areEqual = someName.equals (otherName);

Es el caso típico de que si dos cadenas no son iguales, se generan diferentes valores de hash de código, pero esto no está garantizado. (Ver Referencias 1, 2, 3)