Array [RESOLVIDO]

Boa tarde!

Possuo o seguinte código:

	public static Veiculo[] listaVeiculos(){
		
		Veiculo v1 = new Veiculo();
		v1.setMotorista("AAA");
		v1.setPlaca("AAA");
		
		Veiculo v2 = new Veiculo();
		v2.setMotorista("BBB");
		v2.setPlaca("BBB");
		
		Veiculo v3 = new Veiculo();
		v3.setMotorista("CCC");
		v3.setPlaca("CCC");
		
		return new Veiculo[] {v1, v2, v3};
	}

Gostaria de substituir a parte fixa por dados recebidos pelo acesso a uma tabela de banco de dados, por exemplo:


		try{
			ResultSet rsVeiculo = md.executaQuery("SELECT MOTORISTA,PLACA FROM TBL_VEICULO");
			...

			qtd=0;
			while (rsVeiculo.next()){
				Veiculo v+qtd = new Veiculo();
				v+qtd.setMotorista(rsVeiculo.getString("MOTORISTA"));
				v+qtd.setPlaca(rsVeiculo.getString("PLACA"));
				qtd++;
			}
		}catch (Exception e){

		}finally{
			...
		}

return new Veiculo[] {v[]};

Sei que o código acima não funciona, mas alguém sabe como posso implementar isso?

Obrigado.

Atte.

Carlos.

Que viagem. Brother trabalhe com “qualquer” Collection no lugar de array. Daí é só ir adcionando. Se você ainda quiser insistir em retornar um array é usar o método toArray().

flw.

Cara…
Voce precisa mesmo utilizar Array?!?!

Porque se voce puder utilizar Collections, ficar mais facil para voce.
Poderia ficar assim:

	public static ArrayList<Veiculo> listaVeiculos(){
		Arraylist<Veiculo> listVeiculos = new 	Arraylist<Veiculo>();
			try{
			ResultSet rsVeiculo = md.executaQuery("SELECT MOTORISTA,PLACA FROM TBL_VEICULO");
			while (rsVeiculo.next()){
				Veiculo v = new Veiculo();
				v.setMotorista(rsVeiculo.getString("MOTORISTA"));
				v.setPlaca(rsVeiculo.getString("PLACA"));
				listVeiculos.add(v);
			}
		}catch (Exception e){

		}finally{
			...
		}

	        return listVeiculos;
	}

ps. Eu nao testei esse codigo fiz agora mesmo.
Espero que ajude

até a proxima

Pode ser dessa forma, só que preciso retornar algo assim:

return new Veiculo[] {listVeiculos};

Pois é requisito do cliente.

Somente uma pequena correção no código:

ArrayList<Veiculo> listVeiculos = new ArrayList<Veiculo>();

Obrigado.

Carlos.

Opa… se precisa disso como um array no retorno… segue a linha de usar a List e tenta dar return com

(Veiculo[])listVeiculos.toArray() 

ou tenta criar antes do while um objeto array (Veiculo v[] = new Veiculo()) com o tamanho dele (se o objeto rsVeiculo tiver como pegar o tamanho/quantidade de registros)…

qtd=0; 
Veiculo v[tamanho] = new Veiculo(); 
while (rsVeiculo.next()){  
     v[qtd].setMotorista(rsVeiculo.getString("MOTORISTA"));  
     v[qtd].setPlaca(rsVeiculo.getString("PLACA"));  
     qtd++;  
}

Não testei, só estou dando idéia.

Só algumas correções. A maneira recomendada de criar uma List é assim:

List<Veiculo> veiculos = new ArrayList<Veiculo>();

E para transformar isso num array, você faz:

return veiculos.toArray(new Veiculo[veiculos.size()]);

Sem a necessidade de cast.

Pessoal,

primeiro, obrigado pela ajuda de todos.

Consegui resolver o problema com as dicas postadas nesse tópico, desculpem a demora em dar um retorno, mas estou postando abaixo como ficou o código, caso, no futuro, alguém tenha a mesma dúvida.

	public Veiculo[] listaVeiculos() {
		...
		List<Veiculo> veiculos = null;
		
		try {
			rsVeiculo = md.executaQuery("SELECT MOTORISTA,PLACA FROM TBL_VEICULO");
			...
			
			veiculos = new ArrayList<Veiculo>();
			while (rsVeiculo.next()) {
				Veiculo v = new Veiculo();
				v.setMotorista(rsVeiculo.getString("MOTORISTA"));
				v.setPlaca(rsVeiculo.getString("PLACA"));
				veiculos.add(v);
			}
		} catch (Exception e) {
			...
		} finally {
			...
		}

		return veiculos.toArray(new Veiculo[veiculos.size()]);
	}

Novamente, muito obrigado pela ajuda.

Atte.

Carlos.