Diferença ente Vector e ArrayList e alocação de memória

8 respostas
M

Pessoal a dúvida é a seguinte:

String[] x;
[b]x =new String[10];[/b]

O que faz esse código? (Principalmente a parte em negrito) em relação a memória.

Outra dúvida é a seguinte:

Qual a diferença entre Vector e ArrayList?
A explicação que tenho aqui é a seguinte:
Java Vector é internamente Sincronizado e ArrayList não.
Essa explicação é verdadeira? Teria outra correta ou melhor?

Thx =)

8 Respostas

thundercas

mabiel,

O sistema deve guardar na memória 10 posições com valores NULL.

Quanto a sua segunda pergunta, espero que alguém possa responder ^^

Abraços

M

thundercas:
mabiel,

O sistema deve guardar na memória 10 posições com valores NULL.

Quanto a sua segunda pergunta, espero que alguém possa responder ^^

Abraços

x = new int[10];

Então na segunda parte ele >Aloca< memória para 10 inteiros?
Seria errado eu falar que ele Declara um array de 10 posições?

De qualquer forma agradeço =)

thundercas

Sim, é isso mesmo.

Não, não é errado falar que ele declara um array de 10 posições, assim como não é errado falar que ele INICIALIZA um array de 10 posições.

Abraços

M

thundercas:
Sim, é isso mesmo.

Não, não é errado falar que ele declara um array de 10 posições, assim como não é errado falar que ele INICIALIZA um array de 10 posições.

Abraços

O problema que tenho aqui em relação a isso é o seguinte:

Explicação para a parte x=String[10];

“Aloca memória para 10 strings”.

e outra resposta (que está como errada) Declara um array de 10 posições.

E

int[] y; y=int[10]

Explicação que tenho como correta (para segunda parte):
“Aloca memória para 10 inteiros”;

incorreta
“Declara um array de 10 posições”;

Paulo_Silveira

A frase correta é “aloca a memoria para 10 REFERENCIAS a String”, pois String nao é tipo primitivo. ja que int é tipo primitivo, ai sim voce pode falar “aloca memoria para 10 ints”.

Sim, a maior diferenca de Vector e ArrayList é que Vector é thread safe: pode ter duas threads escrevendo e lendo concorrentemente de um mesmo Vector que nao havera problemas internos no que diz respeito ao Vector.

wesley.comput

Boa tarde mabiel!!!
Vamos as respostas

Primeiramente vc esta criando um array de String com 10 posições “elementos”, ou seja, o objeto denominado x poderá armazenar 10 strings assim:
1º -> “string 1”
2º -> “minha string 2”
3º e assim por diante

Com relação criação de um array existem 3 passos básico para isso:

1º - Declarar - Definir um nome e o tipo do array
String[] vetor;
tipo: String
nome: vetor

2º - Construir - Informar o tamanho do array, ou seja, o numero de elementos
vetor = new String[10];
Aqui devemos informar o numero de elementos senão o compilador vai gerar um erro

3º - Inicializar - Atribuir valores aos elementos do array

vetor[0] = Orientada a objetos;

vetor[1] = Fortemente tipada;

Neste passo atribuímos valores Strings nas posições do vetor

Você tb pode fazer tudo isso em apenas uma linha, ex:
Declarando e construindo:
String[] vetor = new String[10];

Declarando, construindo e inicializando:
String[] vetor = new String[]{“teste”,“Java”,“Array”};

Detalhe, não se esqueça que os array se iniciam na posição 0, se vc declarar um array de tamanho 10, seus elementos ficaram armazenados entre a posição 0 e 9.

Sobre Vector e ArrayList, já existem outros tópicos no fórum que tratam sobre este assunto.
Abraços

M

WoW =) Thx! Agora sim todas as dúvidas foram solucionadas =)

Abraço! :smiley:

LPJava

so completando o queo Paulo falou n ocaso do Vector vc tem metodos sincronizados e assim ele é mais lento que o ArryList por exemplo… a ideia de usar Vector quando vc precisa sincronizar os dados, porem isso ainda nao garante a sincronização.
É mais seguro vc usar um ArrayList e sincronizar o bloco ou metodo que precisa… caso threads for seu problema…

flw!

Criado 28 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 8
Participantes 5