Como faço o retorno de um método que utiliza um Vector; Por Exemplo:
Preciso retornar todas as pessoas do meu Vector:
public Pessoa[] getAll()
return O QUE???
Como faço o retorno de um método que utiliza um Vector; Por Exemplo:
Preciso retornar todas as pessoas do meu Vector:
public Pessoa[] getAll()
return O QUE???
o rertorno nao pode ser o proprio Vector?? ou se vc nao quer modificar ele… uma cópia dele…
Se voce passa um vetor para para um metodo ele nao precisa retornar nada, porque o vetor é passado por referencia, ele nao faz uma copia no metodo, ele muda direto no vetor original.
Calma aí. Isso é um vector:
Vector vectorPessoas = new Vector();
vectorPessoas.add(new Pessoa());
Isso é um array de pessoas:
Pessoa[] arrayPessoas = new Pessoas[100];
arrayPessoas[0] = new Pessoa();
Tando um Vector quanto um Array são objetos em Java. E todos objetos em Java são manipulados apenas pelas suas referências. Dessa forma, fazendo
return vectorPessoas;
ou
return arrayPessoas;
Você sempre passa implicitamente uma cópia do endereço do objeto em questão. Você nunca, nunca passa o objeto propriamente dito. 
Vinci, mas entao o que acontece nesse codigo?? ele passa o array inteiro mas nao precisa do return
import java.awt.Container;
// Java extension packages
import javax.swing.*;
public class PassArray extends JApplet {
// initialize applet
public void init()
{
JTextArea outputArea = new JTextArea();
Container container = getContentPane();
container.add( outputArea );
int array[] = { 1, 2, 3, 4, 5 };
String output =
"Effects of passing entire array by reference:\n" +
"The values of the original array are:\n";
// append original array elements to String output
for ( int counter = 0; counter < array.length; counter++ )
output += " " + array[ counter ];
modifyArray( array ); // array passed by reference
output += "\n\nThe values of the modified array are:\n";
// append modified array elements to String output
for ( int counter = 0; counter < array.length; counter++ )
output += " " + array[ counter ];
output += "\n\nEffects of passing array " +
"element by value:\n" +
"a[3] before modifyElement: " + array[ 3 ];
// attempt to modify array[ 3 ]
modifyElement( array[ 3 ] );
output += "\na[3] after modifyElement: " + array[ 3 ];
outputArea.setText( output );
} // end method init
// multiply each element of an array by 2
public void modifyArray( int array2[] )
{
for ( int counter = 0; counter < array2.length; counter++ )
array2[ counter ] *= 2;
}
// multiply argument by 2
public void modifyElement( int element )
{
element *= 2;
}
} // end class PassArray
Ele não passa o array. Ele passa uma referência para um array. Qualquer objeto passado assim moderá ter seus valores mudados pelo método. E esses valores permanecerão alterados mesmo após o final do método. Entendeu?
ele nao faz uma copia do array e joga pro metodo, as alteracoes sao feitas no array existente, nao é isso?
Isso!