Cómo Changping Computer Training comparte la tecnología de abstracción de programación Java
La clase abstracta AbstractMap implementa algunos métodos simples y comunes, lo cual no es difícil en sí mismo. Sin embargo, hay dos métodos en esta clase abstracta que merecen atención. Se puede decir que la implementación del código fuente de los métodos keySet y de valores es un modelo de libro de texto.
Las clases abstractas generalmente se implementan como esqueletos, con métodos públicos implementados por sus subclases. En el artículo anterior explicamos la interfaz Map y este artículo analiza y estudia la clase AbstractMap.
Existen bastantes estructuras de datos de tipo mapa en Java. Como esqueleto, AbstractMap implementa algunos métodos de la interfaz Map, es decir, proporciona un método común para sus diversas subclases de Map, y los métodos que no están implementados pueden ser diferentes.
Una clase abstracta no puede crear directamente una instancia de una clase abstracta a través de la nueva palabra clave, pero puede tener un constructor. AbstractMap proporciona un constructor sin parámetros modificado protegido, lo que significa que solo sus subclases pueden acceder a él (por supuesto, es una clase abstracta y otras clases no pueden crear instancias de ella directamente), es decir, solo sus subclases pueden acceder a él. Se puede llamar al constructor.
En la interfaz del Mapa, se define internamente una interfaz de entrada. Esta interfaz es la implementación interna del mapeo de mapas para mantener un par clave-valor. El valor clave se almacena en este Map.AbstractMap implementa esta interfaz interna y tiene dos * * *: uno es una variable SimpleEntry y el otro es inmutable. .Entrada simpleinmutable.
publicstaticclasssimpleentryimplemententry, java.io.Serializable
Mapa. Implementada la interfaz de entrada y Serializable (serializable).
Su método es relativamente sencillo, y son todas operaciones de obtención y almacenamiento de valores. La definición de un valor clave es una decoración final, lo que significa que es una referencia inmutable. Además, su método setValue es un poco especial. El valor almacenado no devuelve el valor almacenado, sino el valor anterior. Lo que necesita aprender son los métodos iguales y hashCode que anula.
publicstaticclassSimpleImmutableEntryimplementsEntry, Java.io.serializablesimpleimmutableentry
Una entrada definida como inmutable es en realidad inmutable porque no proporciona un método setValue, por lo que cuando varios subprocesos acceden a ella al mismo tiempo, no se puede modificar mediante el método setValue. En comparación con SimpleEntry, sus variables miembro clave y de valor se definen como tipos finales. Llamar al método setValue generará una excepción UnsupportedOperationException.
Sus métodos iguales y hashCode son consistentes con SimpleEntry.
A continuación, echemos un vistazo a qué métodos en la interfaz Map son implementados por la clase abstracta AbstractMap.
publicintsize()
Se define un método EntrySet en Map, que devuelve la colección Set de Map. entrada, y llamar directamente al método de tamaño de set set es el tamaño del mapa.
publicbooleanisEmpty()
Llame al método de tamaño anterior. Si es igual a 0, estará vacío.
El booleano público contiene clave (clave de objeto)
La implementación de este método es relativamente simple. El iterador del Conjunto se obtiene atravesando el Mapa llamando al método EntrySet. entrada y se compara con la clave del parámetro. Los mapas se pueden almacenar como valores clave vacíos. Debido a que key=null se almacena específicamente en el Mapa (el valor de hashCode no se puede calcular), también determina si la clave del parámetro está vacía.