A classe Java TreeMap armazena dados em uma estrutura de árvore usando uma interface de mapa. Essa classe estende a classe AbstractMap e, como sua classe pai, TreeMap possui dois parâmetros de tipo. Um de seus parâmetros de tipo representa as chaves no TreeMap, enquanto o outro representa os valores.
A estrutura de dados TreeMap armazena pares de valores-chave e permite que você execute operações CRUD nesses dados.
Como criar um mapa de árvore em Java
A classe TreeMap tem quatro construtores que você pode usar para criar um novo objeto TreeMap. O construtor padrão é o mais popular dos quatro. Este construtor não recebe argumentos e gera um mapa de árvore vazio.
// Cria um novo mapa de árvore
TreeMap clientes = novo TreeMap();
O código acima gera um mapa de árvore vazio chamado clientes.
Preenchendo a estrutura de dados do TreeMap
o colocar() O método adiciona um item a um objeto TreeMap. São necessários dois argumentos — uma chave e seu valor. Você pode adicionar itens ao mapa de árvore em qualquer ordem aleatória e a estrutura de dados os armazenará em ordem crescente, de acordo com suas chaves.
// Preencher um mapa de árvore
clientes.put(105, "Jessica Jones");
clientes.put(102, "Marca Williams");
clientes.put(104, "Phil Blair");
clientes.put(101, "Kim Brown");
clientes.put(103, "Jim Riley");
O código acima adiciona cinco clientes, em ordem aleatória, ao mapa da árvore de clientes.
Visualizando Itens em um TreeMap
A classe TreeMap armazena seus dados em um objeto. Então, para ver todos os itens em um mapa de árvore, você pode simplesmente imprimir o objeto de mapa de árvore no console:
// Visualiza todos os itens do mapa de árvore como um objeto
System.out.println (clientes);
O código acima imprime a seguinte saída no console:
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Observe que o objeto acima exibe os itens em ordem crescente. Você também pode visualizar cada item e sua chave correspondente usando um loop para Java.
// Visualiza todos os itens com um iterador
por (Entrada cliente: clientes.conjuntoentry()) {
System.out.println("Chave: " + customer.getKey() + " Valor: " + customer.getValue());
}
O código acima imprime a seguinte saída no console:
Chave: 101 Valor: Kim Brown
Chave: 102 Valor: Mark Williams
Chave: 103 Valor: Jim Riley
Chave: 104 Valor: Phil Blair
Chave: 105 Valor: Jessica Jones
Atualizando itens em um TreeMap
A classe TreeMap permite atualizar um item existente usando o substituir() método. Existem dois métodos de substituição. O primeiro método usa uma chave existente e o novo valor para o qual você deseja mapear a chave existente.
//Substitui o valor existente
clientes.substituir(101,"Kim Smith");
System.out.println (clientes);
O código acima imprime o seguinte objeto no console:
{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Como você pode ver Kim Brown é agora Kim Smith. O segundo método replace() pega uma chave existente, o valor atual da chave e o novo valor que você deseja mapear para a chave.
//Substitui o valor existente
clientes.substituir(103,"Jim Riley", "Michelle Noah");
System.out.println (clientes);
O código acima imprime o seguinte objeto no console:
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}
No objeto acima Michelle Noah substitui Jim Riley.
Excluindo itens do TreeMap
Se você deseja remover um único item do mapa de árvore, o remover() método é sua única opção. Ele pega a chave associada ao item que você deseja remover e retorna o valor excluído.
//Remove um item
clientes.remover(104);
System.out.println (clientes);
A execução do código acima imprime o seguinte objeto no console:
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}
este Classe Java também tem um Claro() método que permite excluir todos os itens no mapa de árvore.
O TreeMap vs. a classe Java HashMap
TreeMap e HashMap são duas das classes de mapas Java mais populares. Ambos estendem a classe AbstractMap. Esse relacionamento dá às classes TreeMap e HashMap acesso a muitas das mesmas funções.
No entanto, existem algumas diferenças notáveis entre essas duas classes de mapas. O TreeMap usa uma implementação de árvore Red-Black da interface Map, enquanto o HashMap usa uma tabela de hash. HashMap permite armazenar uma única chave nula, enquanto TreeMap não. Finalmente, um HashMap é mais rápido que um TreeMap. A velocidade algorítmica do primeiro é O(1), enquanto a do último é O(log (n)).