quinta-feira, 6 de outubro de 2011

Utilizando Map para armazenar arrays.


Esse artigo tem por objetivo mostrar a utilização da interface MAP para armazenar informações específicas de forma estruturada. Vamos ao problema:

  • Preciso dividir minhas informações por empresa
  • Preciso criar um conjunto de informações específicas para a empresa.

Temos o seguinte cenário, n empresas para n informações. Para exemplificar vamos utilizar:

  • empresa precisa passar informações sobre localização (endereço, cnpj, cidade, estado)
  • empresa precisa passar informações sobre setores (vendas, comercial, suporte)
  • empresa precisa passar a listagem de funcionários (Alberto, Henrique, Ana)
  • empresa precisa passar os projetos que trabalha (projeto1, projeto2, projeto3);

Vamos ao código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.Map; // importando a interface Map
import java.util.HashMap; //classe para utilização da interface
public class Mapas
{
public static void main(String[] args)
{
/* Criação do Map, onde o mesmo irá utilizar como chave o nome da empresa para mapear as informações, que estarão em um Array de Object*/
Mapmapa = new HashMap();
/* As informações são passadas através de Arrays de Strings, cada Array contém uma informação específica.*/
String[] localizacao = {"endereco","cnpj","cidade","estado"};
String[] setores = {"vendas","comercial","suporte"};
String[] funcionarios = {"Alberto","Henrique","Ana"};
String[] projetos = {"projeto1","projeto2","projeto3"};
//É criado uma variável para armazenar os objetos (cada array é um objeto)
Object[] informacoes = {localizacao,setores,funcionarios,projetos};
mapa.put("Empresa", informacoes); // é feito o mapeamento entre a empresa e seus dados
// Os dados foram mapeados, vamos ver como recuperá-los.
/* é criado um array de Object para recuperar os dados mapeados, observe que no método get de HashMap é passado o parâmetro "Empresa". Será retornado as informações que estão mapeadas com a empresa passada como parâmetro. Se vc tivesse passado como parâmetro a empresa "IBM" e existisse um mapeamento para essa empresa, as informações sobre a IBM retornariam no Array recDados*/
Object[] recDados = mapa.get("Empresa");
for (int i = 0; i < recDados.length; i++) // array para iterar entre as informações
{
// switch utilizado para exibir a informação que está sendo impressa.
switch (i)
{
case 0:
System.out.println("Localização: ");
break;
case 1:
System.out.println("Setores: ");
break;
case 2:
System.out.println("Funcionários: ");
break;
case 3:
System.out.println("Projetos: ");
break;
}
/*Como o array recDados é do tipo Object e eu tenho a informação que ele armazena array de strings, eu devo fazer um Cast para String[]*/
for (String s : (String[])recDados[i])
{
System.out.println(s); // imprime o item para cada array de strings
}
System.out.println(); // espaço após terminar a impressão da informação
}
}
}

Resultado:

Localização:
endereco
cnpj
cidade
estado

Setores:
vendas
comercial
suporte

Funcionários:
Alberto
Henrique
Ana

Projetos:
projeto1
projeto2
projeto3

Bom é isso aí, a interface Map é simples mas muito eficiente para estruturar informações.

Fonte: DevMedia

Nenhum comentário: