En términos generales, un mapa es una estructura de datos compuesta por pares de valores clave, y cada clave es única en el conjunto. Usemos K y V para representar claves y valores para ilustrar los nueve problemas principales sobre MAP en Java.
0. Convertir el mapa al tipo de lista
En Java, la interfaz MAP proporciona tres formas de obtener colecciones: conjunto de teclas, conjunto de valor y conjunto de valores clave. Todos se pueden convertir al tipo de lista mediante el método Constructor o AddAll (). El siguiente código muestra cómo construir una lista de matrices a partir de un mapa:
// Key ListList KeyList = New ArrayList (map.KeySet ()); // value listList valuelist = new ArrayList (map.ValueSet ()); // key-value listList EntryList = new ArrayList (map.Entryset ());
1. Traver el mapa a través de la entrada
De esta manera en Java, existe como pares de valor clave se llama map.entry. MAP.ENTRYSET () Devuelve una colección de valor clave, que es una forma muy eficiente de atravesar.
para (entrada de entrada: map.entryset ()) {// get keyk key = entry.getKey (); // get valuev value = entry.getValue ();} El iterador también se usa con frecuencia, especialmente antes de JDK1.5
Iterador itr = map.entryset (). Iterator (); while (itr.hasNext ()) {Entry Entry = ITR.Next (); // Obtener KeyK Key = Entry.getKey (); // Obtener valor ValueV = Entry.getValue ();} 2. Ordenar mapa por clave
La clasificación requiere operaciones frecuentes en el KE de MAP. Una forma es implementarlo a través de un comparador:
List list = new ArrayList (map.Entryset ()); colección.sort (lista, new Comparator () {@OverridePublic int Compare (Entry e1, Entry e2) {return e1.getKey (). CompareTo (e2.getKey ());}}); Otro método es usar SortedMap, pero la interfaz comparable debe implementarse.
SortedMap SortedMap = new TreeMap (new Comparator () {@OverridePublic int Compare (k k1, k k2) {return k1.compareto (k2);}}); sortedmap.putall (map);3. Ordene el mapa con valor <Br /> Esto es algo similar al punto anterior, el código es el siguiente:
List list = new ArrayList (map.Entryset ()); colección.sort (list, new Comparator () {@OverridePublic int Compare (Entry e1, Entry e2) {return e1.getValue (). CompareTo (e2.getValue ());}});4. Inicializar un mapa constante estático
Cuando desee crear un mapa estático global, tenemos dos formas y es segura de hilo.
En Test1, aunque declaramos que el mapa es estático, aún podemos cambiar su valor cuando se inicializan, al igual que Test1.map.put (3, "tres");
En Test2, lo establecemos como no modificado a través de una clase interna, por lo que cuando ejecutamos Test2.map.put (3, "tres"), arrojará un
La excepción de OperationException no compatible le prohíbe modificar. public class test1 {private static final mapa map; static {map = new Hashmap (); map.put (1, "one"); map.put (2, "dos");}} public class test2 {private static map map; static {map AMAP = new HashMap (); AMap.put (1, "One"); AMAP.put (2, "dos"); Colección.unmodifiablemap (AMAP);}} 5. La diferencia entre hashmap, treemap y hashtable
En la interfaz del mapa, hay tres implementaciones: hashmap, treemap y hashtable.
Son diferentes. Para más detalles, consulte el artículo "Hashmap vs. Treemap vs. Hashtable vs. Linkedhashmap".
6. Consulta inversa en el mapa
Después de agregar un par de valor clave al mapa, significa que en el mapa, la clave y el valor corresponden a uno, y una clave corresponde a un valor. Pero a veces necesitamos revertir la consulta, como buscar su clave a través de un cierto valor. Esta estructura de datos se denomina mapa bididireccional. Desafortunadamente, JDK no lo apoya.
Apache y Guava proporcionan conjuntamente esta implementación del mapa bidireccional, en la que estipula que tanto las claves como los valores deben ser una relación 1: 1.
7. Copiar el mapa
Java proporciona muchos métodos que pueden realizar la replicación de un mapa, pero esos métodos pueden no sincronizarse en ningún momento. En pocas palabras, es el cambio el que ocurre en un mapa, y el copiado sigue siendo el mismo. Aquí hay un método de implementación relativamente eficiente:
Mapa copiedmap = colección.synchronizedmap (mapa);
Por supuesto, hay otro método, que es la clonación. Pero nuestro creador de Java Josh Bloch no recomienda este método. Una vez dijo en una entrevista sobre la clonación de mapas: los métodos de clonación se proporcionan en muchas clases porque las personas los necesitan. Sin embargo, la clonación es muy limitada y a menudo causa un impacto innecesario. (Texto original "Constructor de copia versus clonación")
8. Crea un mapa vacío
Si este mapa está configurado para no estar disponible, puede ser implementado por el siguiente
map = colección.emptymap ();
Por el contrario, cuando podemos usarlo, podemos
map = new HashMap ();
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.