Tutorial do HierarchicalMap
HierarchicalMap é uma interface. Assim, qualquer um pode implementá-la. Este tutorial é baseado em BasicHierarchicalmap, uma implementação referência em Java da interfae HierarchicalMap.
Este tutorial abrange os seguintes assuntos:
(O recurso de Javascript precisa estar habilitado, no seu navegador, para permitir a visualização dos códigos utilizados nos exemplos deste tutorial)
Nível Basico
1. O Primeiro ContatoA interface HierarchicalMap é composta por três conjutos principais de métodos e alguns métodos auxiliares:
Segue abaixo o nosso primeiro código de exemplo (clássico):
Como pode ser visto, HierarchicalMap se comporta exatamente como um HashMap quando se utiliza uma chave simples.
2. Criação de EstruturasAgora, iremos criar uma estrutura um pouco mais complexa:
Nesta estrutura, cada círculo representa um nó (que é uma instância da HierarchicalMap), e cada retângulo representa uma folha, que pode ser qualquer objeto (como por exemplo uma instância de java.lang.String). Um nó pode conter outros nós como no caso do "Pedido" e do "Endereço", ou uma folha como no caso do "tipo", "Cidade", "Estado" e do "CEP".
O trecho de código abaixo cria uma estrutra de dados representando o diagrama acima:
O método "add" possui uma outra assinatura que recebe somente a chave, sem o valor. Neste caso, uma nova instância da HierarchicalMap é criada e adicionada sob a chave. Desta forma, o segundo endereço poderia ser adicionado de forma diferente como no exemplo abaixo:
3. Recuperação dos DadosUma vez criada a estrutra, os dados podem ser recuperadas:
O código da Listagem acima resulta na seguinte saída:
Sta Clara SP
Note que a operação get recupera somente um item de cada vez, e no caso de possuir mais itens, o primeiro dado inserido é retornado. Assim, mesmo havendo duas cidades armazenadas na estrutura, a primeira cidade, no caso "Sta Clara", foi obtida no exemplo anterior. Por outro lado, o valor retornado para o estado foi "SP", pois a operação foi efetuada sobre o nó "endereco2". Para obter todos os itens de uma mesma chave, deve-se utilizar a operação getAll:
O resultado da execução do código acima será:
Sta Clara São Paulo4. Interação com Coleções
A estrutura de dados pode ser percorrida através de Iterator:
A saída produzida será:
Address type : Billing City : Sta Clara State : CA ZIP code : 95054 Address type : Shipping City : São Paulo State : SP ZIP code : 04717-0045. Reestruturação do Mapa
Apesar da estrutura utilizada até então estar em conformidade com a recomendação da W3C, não conseguimos extrair a vantagem da HierarchicalMap. Informações organizadas desta maneira, não permite acessar aos dados internos de forma direta (ex. recuperar o estado do endereço de entrega). Este acesso direto, pode ser obtido através de uma pequena reestruturação na HierarchicalMap. Assim, podemos implementar um método como o que está descrito a seguir:
Com o métdod acima, podemos transformar o mapa original para uma estutura como abaixo:
Agora, podemos reucperar de forma mais direta:
O resultado será:
Estado para Entrega: SP Estado para a Faturamento: CA
O método abaixo consegue reoganizar o mapa, de volta para estrutura original:
Realmente, isto é tudo sobre HierarchicalMap. Como pode ver é tão simples como isso.
Porém, podemos aplicar esta interface em soluções mais interessantes e algumas vezes mais complexas.
Continua para Nível Intermediário