Dúvidas sobre aumentar tamanho de um vetor em java

6 respostas
marcosstefani

Fale pessoal, estou com um grave problema… observem: meprblema está em negrito.

package lista1;

import io.*;

public class Ex18 {

public static void main(String[] args) {

int[]vA = new int[10];

int[]vB = new int[10];

char id;

lervetor(vA, id=A);

lervetor(vB, id=B);

união(vA,vB);

//		diferença(vA,vB);

//		soma(vA,vB);

//		produto(vA,vB);

//		intersecção(vA,vB);

System.exit(0);

}

static void lervetor(int vet[],char ident){

int i;

for(i=0;i<10;i++)

vet[i]=InOut.leInt(Informe o valor da posição [+i+"] do vetor “+ident+”:");

}

static void união(int v1[], int v2[]){

String msg="";

int x=10, a, b;

boolean acrescenta=true;

int[] Delta = new int[x];

for(a=0;a<10;a++){

acrescenta=true;

Delta[a]=v1[a];

msg+="|"+Delta[a]+"|";

for(b=0;b<10;b++){

if(v1[a]==v2[b]){

acrescenta=false;

}

}

[b]			if(acrescenta==true){

x++;

Delta[x]=v2;

msg+="|"+Delta[x]+"|";

}

}

InOut.MsgDeInformação(UNIÃO,A união de Vetor A e Vetor B é:\n+msg);

}

}

não consigo aumentar o tamanho da praga do vetor… alguém poderia me ajudar?

6 Respostas

rodrigo_gomes

Olá,

Não se pode aumentar o tamanho de um vetor. Ou você cria um novo vetor do tamanho que deseja ou então pode usar um array de tamanho variavel, como ArrayList por exemplo.

[]´s

ViniGodoy

Olá!

Seja-bem vindo ao GUJ! Da próxima vez que postar códigos, não deixe de usar a tag code, como descrito neste artigo (por favor, dê uma lida).

É o que o colega falou, não é possível aumentar o tamanho de um array em Java. A forma para contornar esse problema é criar um novo array maior e depois copiar o conteúdo do antigo. Para copiar o conteúdo de Arrays, o Java tem uma função extremamente otimizada chamada System.arrayCopy.

Ou então, você pode usar uma classe, que simula os Arrays, presente na Java Collections Framework. O java disponibiliza duas, ambas crescem a medida que você precisa de elementos, chamadas ArrayList e LinkedList. Na verdade, até existem outras classes, mas para uso mais específico, como programação concorrente.

A forma correta de uso de uma dessas listas é:
List<Integer> suaLista = new ArrayList<Integer>();

Note que, apesar de instanciar uma lista do tipo ArrayList, crio um ponteiro do tipo List. Isso me permite que eu troque o tipo da lista no futuro, se necessário.

Dê uma pesquisada em toda Java Collections Framework. É um dos pontos fortes do Java.

LPJava

bom quando vc cria um array e define seu tamanho nesse seu caso

nt[]vA = new int[10];
int[]vB = new int[10];

Não tem como vc aumentar ou diminuir, ja que o tamanho foi definido… veja os link do vinny ai que é melhor opção para criar os array… procure tb a class ArrayList ela vai atender sua necessidade…

e dar uma lida depois nesse tutorial, bem legal

http://www.guj.com.br/posts/list/50115.java

T

Embora não seja possível redimensionar um array em Java, é possível criar um novo array com o tamanho desejado, copiar o array antigo sobre o novo, e então desalocar o array antigo. Exemplo:

int[] array = new int[20];
...
int[] tmp = new int[50];
System.arraycopy (array, 0, tmp, 0, Math.min (array.length, tmp.length)); // isto copia o array antigo sobre o novo
array = tmp; // isto desaloca o array antigo
tmp = null;  // isto remove a referência

Como de costume, encapsule isto em um método, para ser reusado.

marcosstefani

eu agradeço a todos pela atençao e colaboraçao.

fico muito feliz em saber que posso contar com vcs, e contem comigo quando precisarem…

um forte abraço.

E

How to resize an array in Java:

http://www.source-code.biz/snippets/java/3.htm

Criado 25 de março de 2007
Ultima resposta 19 de out. de 2011
Respostas 6
Participantes 6