quinta-feira, 7 de novembro de 2013

Convertendo um array para Vetor em Java



Fala galeraaaaaa! Andei meu sumido por motivos pessoais de GWT na minha vida, mas, graças a ele, me deparei com a seguinte situação hoje:

Tinha uma lista de objetos no qual queria mostrar em um calendário gráfico do GWT. Até ai tudo bem, mas, na hora de fazer isto, acabei verificando que o bendito calendário só aceitava um CalendarEvent[].

Sabe oque estes colchetes querem dizer? sim isso mesmo um bendito de um Vetor!!!!! 
Com isso, tive que trabalhar em uma solução para resolver este problema. E adivinhem? Descobri!!!! \0/////

Vou mostrar agora à vocês como transformar nosso array de objetos em um vetor. Vamos lá!

Primeiro, vamos explicar oque é um vetor:


Segundo a definição mais clássica da informática, um vetor é uma estrutura de dados homogenia, ou seja, todos os elementos de um vetor são do mesmo tipo. 

A estrutura básica de um vetor é representada por seu nome e um índice, que deve ser utilizado toda a vez que se deseja acessar um determinado elemento dentro de sua estrutura. É importante ressaltar que todo o vetor possui um tamanho fixo, ou seja, não é possível redimensionar um vetor ou adicionar a ele mais elementos do que este pode suportar. Em Java a posição inicial do vetor é definida pelo valor zero.

Declaração do vetor

Para se declarar um vetor, devemos informar ao menos seu nome e o tipo de dado que este irá armazenar. Em Java, este tipo de dado pode ser representado tanto por um tipo primitivo como por uma classe qualquer, lembrando que as regras de herança também são válidas para vetores.

Exemplo:

int[] vetorDeInteiros;
float[] vetorDeFloat;
String[] vetorDeString;
long[] vetorDeLong;


É importante ressaltar que um vetor em Java torna-se um objeto em memória, mesmo que ele seja um vetor de tipos primitivos.

Inicialização de dados do vetor

Uma vez que um vetor torna-se um objeto em memória, sua inicialização é muito semelhante à de um objeto normal. Uma vez que um vetor é uma estrutura de tamanho fixo, esta informação é necessária a sua inicialização.

int[] vetorDeInteiros = new int[4];
float[] vetorDeFloat = new float[5];
String[] vetorDeString = new String[6];


Assim como uma variável comum, também é possível inicializar um vetor que já foi declarado anteriormente, conforme exemplo abaixo:

ExemplosVetores.java
01/**
02 * Classe utilizada para demonstrar o uso de vetor.
03 */
04public class ExemplosVetores {
05  public static void main(String[] args) {
06    int[] vetor;
07    vetor = new int[4];
08  }
09}

Assim como um objeto, um vetor deve ser inicializado antes de ser utilizado. Uma chamada a um índice de um vetor não inicializado gera uma exceção.


Existe outra forma de se inicializar vetores já com valores em cada uma de suas posições, para isto basta utilizar chaves da seguinte maneira:

ExemplosVetores.java
01/**
02 * Classe utilizada para demonstrar o uso de vetor.
03 */
04public class ExemplosVetores {
05  public static void main(String[] args) {
06    int vetor[] = {2, 5, 4, 8, 5};
07  }
08}

Note que esta forma de inicialização é bastante prática, porêm não deixa clara a quantidade de elementos que há no vetor obrigando o assim que você conte a quantidade de elementos para saber o tamanho do vetor.


Acesso aos elementos do vetor

Consideremos o código do exemplo anterior, a representação do seu vetor se daria da seguinte forma:

índice=
0
1
2
3
4
vetor = 
2
5
4
8
5


Logo, para acessar os valores de cada uma das posições deste vetor você deve utilizar o seu índice correspondente dentro de colchetes, assim como segue: 

ExemplosVetores.java
01/**
02 * Classe utilizada para demonstrar o uso de vetor.
03 */
04public class ExemplosVetores {
05  public static void main(String[] args) {
06    int vetor[] = {2, 5, 4, 8, 5};
07 System.out.println("Elemento do indice 2 = " + vetor[2]);
08 System.out.println("Elemento do indice 4 = " + vetor[4]);
09  }
10}

Com isso teríamos a seguinte saída em tela:

C:\>javac ExemplosVetores.java
C:\>java ExemplosVetores
Elemento do indice 2 = 4
Elemento do indice 4 = 5


Lembre-se que o primeiro índice do vetor é sempre zero, logo, seu último elemento é sempre igual ao tamanho do vetor menos um.


Se você já trabalhou com vetores, mesmo que apenas na faculdade, deve saber que com eles não conseguimos manipular os dados incluindo ou excluindo, só conseguimos criar (e destruir).
ExemplosVetores.java
01Ex.: String[] meuVetor = new String[] {“A”, “B”, “C”, “D”, “E”};

Neste exemplo, criamos um vetor com 5 posições, até aqui tudo bem, podemos solicitar cada posição do vetor com a chamada meuVetor[n],  trocando “n” pela posição do vetor, é claro, no nosso caso de 0 a 4.
Mas e se for necessário, em tempo de execução, adicionar algum valor ao vetor? Não é possível fazer ummeuVetor.add(), então como fazer?
Simples! Basta trabalhar com Array, List ou Collection e jogar esse vetor no lixo!
Mas e se a aplicação nos forçar a trabalhar com vetor, caso contrário seria necessário refazer todo o código?
Simples! Basta trabalhar com Array e converter para Vetor!
Como?
Vejamos o exemplo, em javanês:
ExemplosVetores.java
01
ArrayList<String> meuArray new ArrayList<String>();
String[] meuVetor null;
for(int i = 0; i < 10; i++){
meuArray.add(“POSICAO: “ + i);
}
meuVetor meuArray.toArray(new String[meuArray.size()]);

Explicando!
A primeira e segunda linha não tem segredo, ali estão sendo criadas nossas variáveis base, um ArrayList meuArray e um vetor String[] meuVetor.
O laço “for” também não tem muita complicação, de 0 até 9 ele está inserindo valores no Array.
Na ultima linha que a mágica acontece, vamos por partes:
Primeiro, estamos fazendo meuVetor = meuArray.toArray() este método (toArray) é da própria linguagem Java, e serve exatamente para isso que precisamos, ele prepara um Array para ser convertido em Vetor, mas este método sozinho não faz muita coisa, então precisamos informar o tipo de vetor que estamos querendo, no caso é um vetor de String, então dentro do toArray basta informar new String[n]. Mas que “n”? para criar um Vetor, precisamos informar a quantidade de posições que ele terá, e para conseguir esta façanha, basta invocar o método size() domeu Array, que devolve o tamanho do array, justamente o que precisamos para iniciar o Vetor!
É isso ai galera! Espero que tenha ajudado, e até a próxima. Abraços!!!
Bruno Rafael.

Nenhum comentário:

Postar um comentário

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.