DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Vetores em Java

Veja neste artigo o que são Vetores e como trabalhar com essa estrutura de dados na linguagem Java.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

Vetores são estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um certo tipo; por esta razão, também são conhecidos como estruturas homogêneas de dados.

 

Internamente, um vetor armazena diversos valores, cada um associado a um número que se refere à posição de armazenamento, e é conhecido como índice. Os vetores são estruturas indexadas, em que cada valor que pode ser armazenado em uma certa posição (índice) é chamado de elemento do vetor.

Confira as novidades que a DevMedia lançou em seus cursos de java.

Cada elemento do vetor pode ser utilizado individualmente de forma direta, ou seja, pode ser lido ou escrito diretamente, sem nenhuma regra ou ordem preestabelecida, fazendo dos vetores estruturas de dados de acesso aleatório.O número de posições de um vetor corresponde ao tamanho que ele tem; assim, um vetor de tamanho 10 tem esse número de elementos, isto é, pode armazenar até dez elementos distintos. Os diferentes elementos de um vetor são distinguidos unicamente pela posição que ocupam no vetor. Cada posição de um vetor é unicamente identificada por um valor inteiro positivo, linear e sequencialmente numerado.

a[i], corresponde ao i-ésimo elemento do vetor a, sendo que o valor da variável i deve pertencer ao intervalo dos índices do vetor: ((i >= 0) && (i < a.length)).

O Java como as linguagens C e C++ são linguagens com vetores zero-based, isto é, as posições do vetor iniciam a numeração a partir do valor 0, portanto, um vetor de tamanho 10 teria índices iniciados em 0 prosseguindo até o 9.

Declarando Variáveis do Tipo Vetor

Na declaração de vetores deverão ser fornecidas três informações: 1) o nome do vetor, 2) o número de posições do vetor (seu tamanho), e 3) o tipo de dado que será armazenado no vetor. A declaração de um vetor para "inteiros", de nome "vetor", em Java:

int vetor[]; // declaração do vetor
 

Podemos notar que as declarações de vetores são semelhantes às declarações de variáveis, os elementos sintáticos que diferenciam as variáveis do tipo vetor das outras variáveis são os colchetes. Embora declarado, o vetor não está pronto para uso, sendo necessário reservar espaço para seus elementos (uma operação de alocação de memória).

vetor = new int[10]; // alocação de espaço para vetor

Na alocação de espaço, não repetimos os colchetes e utilizamos o operador new (uma palavra reservada da linguagem) para reservar espaço para 10 (dez) elementos do tipo int.

As duas declarações podem ser combinadas em um única, mais compacta: 

int vetor[] = new int[10]; // declaração combinada

Exemplos de Declarações de Variáveis do Tipo Vetor

Na linguagem Java um vetor é uma "classe", portanto, deve-se utilizar o método new, que ativa o método construtor correspondente, para criar instâncias, ou exemplares, da classe vetor do tipo selecionado (int, double, float, char, String, entre outros), por exemplo:

a) declarando um vetor para armazenar 10 números inteiros

int nro = new int[10];

b) declarando um vetor para armazenar 10 valores do tipo real (ou monetários)

double salario = new double[10];

c) declarando um vetor para armazenar o nome dos 12 meses do ano

String mes = new String[12];

Em síntese:

int n = 10; // tamanho do vetor
int v[] = new int[n]; // declaração e alocação de espaço para o vetor "v"
int i; // índice ou posição

// processando os "n" elementos do vetor "v"
for (i=0; i<n; i++) {
  v[i] = i; // na i-ésima posição do vetor "v" armazena o valor da variável "i"
}

Representação interna:

v[0]v[1]v[2]v[3]v[4]v[5]v[6]v[7]v[8]v[9]
0123456789

Aplicação Java exemplificando a utilização do tipo de dados vetor:

import java.util.Scanner;

public class Exemplo1 {

  public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);

    int n = 10; // tamanho do vetor
    int v[] = new int[n]; // declaração do vetor "v"
    int i; // índice ou posição

// Entrada de Dados
    for (i=0; i<n; i++) {
      System.out.printf("Informe %2do. valor de %d: ", (i+1), n);
      v[i] = ler.nextInt();
    }

// Processamento: somar todos os valores, definir o maior e o menor valor
    int soma = 0;
    int menor = v[0]; // v[0] = 1o. valor armazenador no vetor "v"
    int maior = v[0];
    for (i=0; i<n; i++) {
      soma = soma + v[i];

      if (v[i] < menor)
         menor = v[i];

      if (v[i] > maior)
         maior = v[i];
    }

// Saída (resultados)
    System.out.printf("\n");
    for (i=0; i<n; i++) {
      if (v[i] == menor)
        System.out.printf("v[%d] = %2d <--- menor valor\n", i, v[i]);
      else if (v[i] == maior)
              System.out.printf("v[%d] = %2d <--- maior valor\n", i, v[i]);
           else System.out.printf("v[%d] = %2d\n", i, v[i]);
    }

    System.out.printf("\nSoma = %d\n", soma);
  }

}

Executando a aplicação tem-se os seguintes resultados:

Resultado da aplicação

A classe Math contém diversos métodos estáticos (não exige uma instância da classe para utilização) destinados a operações numéricas, citando:

  • static double random(): retorna um valor, do tipo double, "aleatório" no intervalo de 0.0 até 1.0;
  • static long round(double): retorna um número do tipo long mais próximo (ou arredondado) do valor do tipo double do argumento.

A utilização combinada dos métodos "random" e "round" possibilita a geração de números aleatórios, como por exemplo:

a[i] = (int)Math.round(Math.random() * 10); // gera um número inteiro aleatório no intervalo de 0 até 10

Entendendo a atribuição:

  • Math.random() retorna um número aleatório, do tipo double, no intervalo de 0.0 até 1.0;
  • Math.random() * 10 tem como resultado um número no intervalo de 0.0 até 10.0;
  • Math.round(Math.random() * 10) retorna um número do tipo long mais próximo (ou arredondado) do resultado;
  • (int) faz a conversão (ou coerção, em inglês "cast") do tipo long para o tipo int.
A aplicação Java a seguir implementa o método de ordenação por seleção ou Selection Sort: Selection Sort em Java

Inicialização de vetores

Java permite a inicialização de vetores no momento da declaração, por exemplo:

String nome[] = {"Juca Bala", "Maria da Silva", "Marcos Paqueta"};

Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o valor Maria da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se que não é necessário indicar o tamanho do vetor e também fazer a alocação de espaço através do operador new. O tamanho do vetor será conhecido através do campo length como mostra a aplicação a seguir:

Exemplo de uso do campo length

A inicialização de vetores na declaração também permite indexar valores predefinidos como no caso das informações relacionadas aos meses do ano. Veja um exemplo na próxima aplicação Java:

Indexando valores predefinidos

Estrutura for aprimorada

Utilizada para percorrer os elementos de um vetor sem utilizar um contador:

for (parâmetro: nomeDoVetor) {
   instrução;
}

Onde "parâmetro" tem duas partes: a) um tipo (deve corresponder ao tipo dos elementos no vetor), e b) um identificador, por exemplo: int nro.

O identificador representa os valores sucessivos do vetor nas sucessivas iterações da instrução for. Veja um exemplo na próxima aplicação Java:

Uso da estrutura for aprimorada

Referência: Peter Jandl Junior. Introdução ao Java. São Paulo: Berkeley - 2002.



Técnico Mecânico pelo CEFET, Curitiba/PR. Tecnólogo em Processamento de Dados pela UEM, Maringá/PR. Especialista em Informática pela Universidade Federal do Paraná. Mestre em Informática Aplicada pelo Programa de Pós Graduação em [...]

O que você achou deste post?
Conhece a assinatura MVP?
Serviços

Mais posts