De um modo geral, um mapa é uma estrutura de dados composta por pares de valor-chave e cada chave é única no conjunto. Vamos usar K e V para representar chaves e valores para ilustrar os nove principais problemas sobre o mapa em Java.
0. Converta o mapa em tipo de lista
No Java, o MAP Interface fornece três maneiras de obter coleções: conjunto de chaves, conjunto de valores e conjunto de valores-chave. Todos eles podem ser convertidos para o tipo de lista pelo método construtor ou addall (). O código a seguir mostra como construir um Arraylist a partir de um mapa:
// key listlist keylist = new ArrayList (map.keyyset ()); // Value listlist valuelist = new ArrayList (map.valueSet ()); // key-value listList Entrylist = new ArrayList (map.entrySet ());
1. Atravesse o mapa através da entrada
Dessa forma, em Java existe como pares de valor-chave é chamado de map.entry. Map.EntrySet () retorna uma coleção de valor-chave, que é uma maneira muito eficiente de atravessar.
para (entrada de entrada: map.entrySet ()) {// Get Keyk key = Entry.getKey (); // Get Valuev Value = Entry.getValue ();} O iterador também é usado com frequência, especialmente antes de JDK1.5
Iterator itr = map.entrySet (). Iterator (); while (itr.hasNext ()) {Entry Entry = iTr.Next (); // Get Keyk key = Entry.getKey (); // Get ValueV Value = Entry.getValue ();} 2. Mapa de classificação por chave
A classificação requer operações frequentes no KE do mapa. Uma maneira é implementá -lo através de um comparador:
Lista Lista = new ArrayList (map.entrySet ()); coleções.sort (list, new Comparator () {@OverridePublic Int Compare (entrada E1, entrada e2) {return e1.getKey (). Compareto (e2.getKey ();}}); Outro método é usar o SLATEDMAP, mas a interface comparável deve ser implementada.
STORNEDMAP STORDMAP = new Treemap (novo comparador () {@OverridePublic Int Compare (K K1, K K2) {return k1.compareto (k2);}}); stornedmap.putall (map);3. Classifique o mapa com valor <r />, isso é um pouco semelhante ao ponto anterior, o código é o seguinte:
Lista Lista = new ArrayList (map.entrySet ()); coleções.sort (list, new Comparator () {@OverridePublic Int Compare (entrada E1, entrada e2) {return e1.getValue (). Compareto (e2.getValue ());}});4. Inicialize um mapa constante estático
Quando você deseja criar um mapa estático global, temos duas maneiras e é segura por threads.
No Test1, embora declaremos que o mapa é estático, ainda podemos alterar seu valor quando inicializado, assim como test1.map.put (3, "três");
No TEST2, configuramos para não ser modificado por meio de uma classe interna; portanto, quando executamos tests2.map.put (3, "três"), ele jogará um
A exceção de UnsupportEdOperationException proíbe você de modificar. public class Test1 {mapa final estático privado do mapa; static {map = new hashmap (); map.put (1, "um"); map.put (2, "dois");}} classe pública test2 {private static mapa final; mapa; static {map amap = new hashmap (); amap.put.put); Coleções.unmodifiablemap (AMAP);}} 5. a diferença entre hashmap, treemap e hashtable
Na interface do mapa, existem três implementações: Hashmap, Treemap e Hashtable.
Eles são diferentes. Para detalhes, consulte o artigo "Hashmap vs. Treemap vs. Hashtable vs. LinkedHashmap".
6. Consulta reversa no mapa
Depois de adicionar um par de valores-chave ao mapa, isso significa que no mapa, a chave e o valor correspondem a um, e uma chave corresponde a um valor. Mas às vezes precisamos reverter a consulta, como procurar sua chave por meio de um determinado valor. Essa estrutura de dados é chamada de mapa bididirecional. Infelizmente, o JDK não o suporta.
O Apache e a Guava fornecem conjuntamente essa implementação do mapa bidirecional, no qual estipula que as chaves e os valores devem ser de 1: 1.
7. Copiar o mapa
O Java fornece muitos métodos que podem realizar a replicação de um mapa, mas esses métodos podem não ser sincronizados a qualquer momento. Simplificando, é a mudança que ocorre em um mapa, e a copiada permanece a mesma. Aqui está um método de implementação relativamente eficiente:
Mapa copiedmap = collection.synchronizedmap (mapa);
Claro que há outro método, que é clonagem. Mas nosso criador Java Josh Bloch não recomenda esse método. Ele disse uma vez em uma entrevista sobre clonagem de mapa: os métodos de clonagem são fornecidos em muitas classes porque as pessoas precisam delas. No entanto, a clonagem é muito limitada e geralmente causa impacto desnecessário. (Texto original "Copy Construtor versus clonagem")
8. Crie um mapa vazio
Se este mapa estiver definido como indisponível, poderá ser implementado pelo seguinte
map = collection.EmptyMap ();
Pelo contrário, quando podemos usá -lo, podemos
map = new hashmap ();
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.