Dúvida: a respeito de List

4 respostas
P

Pessoal , perdoem a minha ignorância no assunto, sou beem iniciante em java, estou tentando criar uma JComboBox apartir de uma coluna de um BD, que coletei através de uma consulta usando criteria, api do hibernate.

o retorno da consulta eh uma List.

Eu encontrei na net uma classe pronta que fornece um recurso de autocompletar do JComboBox, porem o construtor só aceita Object[][] itens. No exemplo o autor usa um String [] pré definido com os atributos.

Eu tentei passar a List com um cast mas não funcionou, preciso saber como faço pra criar apartir da minha List (que contém os objetos da coluna Nome) uma vetor de Strings para passar para o construtor! Se algum puder me ajudar agradeço! Obrigado!

4 Respostas

adolfo_eloy

Iterar sobre sua lista para criar um Object[][] pode ser a solução. Não sei se existe uma forma mais otimizada p/ resolver isso.

davidtiagoconceicao

Olha cara, eu acho meio brabo transformar uma List (unidimensional) em uma matriz Object[][] (bidimensional).
Para todos os casos, a interface List define o método toArray(), talvez te ajude:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html#toArray()

Sugiro que você confira na documentação desta classe exatamente o que esta matriz Object[][] deve possuir.

P

Amigos, eu fiz o seguinte código:

List lista = /*resultado de uma consulta através de criteria, que carrega somente uma determinada coluna, a coluna nomes*/
String[] listaNome = new String[lista.size()];
int j=0;
for(Iterator i=lista.iterator(); i.hasNext(); j++){
listaNome[j] = String.valueOf(i.next());
System.out.println(listaNome[j]+ " " +String.valueOf(i.next())); //para visualizar a operação
}
//o resultado desse print na linha de comando eh: null /*um nome da lista*/

Tentei também:

List lista = /*resultado de uma consulta através de criteria, que carrega somente uma determinada coluna, a coluna nomes*/
String[] listaNome = new String[lista.size()];
int j=0;
for(Aluno alu : lista){
listaNome[j++] = alu.getNome();
} // continua null a listaNome

Eu não imaginava que era tão chato trabalhar com listas e String. Se alguem conseguir, converter essa list em um vetor de string, eu agraeço a ajuda! Valeu!

adolfo_eloy

Cara, eu peguei o seu código e criei um método na classe só para simular a geração dos dados da sua lista, e o que pude ver
é que seu código para iterar na lista e preencher o array funcionou corretamente. Caso queira testar com o código que escrevi, o mesmo
segue logo abaixo:

import java.util.Iterator;
import java.util.List;


public class TestList {

	public static void main(String[] args) {

		 // simulando a recuperacao dos dados da lista
		 TestList tl = new TestList();
		 List<String> lista = tl.getListaDeNomes();
		 
		 // teste com seu codigo
		 String[] listaNome = new String[lista.size()];  
		 int j=0;  
		 for(Iterator<String> i=lista.iterator(); i.hasNext(); j++){  
			 listaNome[j] = String.valueOf(i.next());  
			 System.out.println(listaNome[j]+ " - " +String.valueOf(i.next())); //para visualizar a operação  
		 }  
		 
	} 
	
	/**
	 * metodo para simular o retorno do seu banco de dados com uma lista de nomes
	 * @return List<String>
	 */
	public List<String> getListaDeNomes() {
		List<String> l = new java.util.ArrayList<String>();
		l.add("Juca");
		l.add("Zé Lelé");
		l.add("Nhô Lau");
		l.add("Chico Bento");
		return l;
	}
}

Eu achei estranho, quanto a cada iteração você realizar o next 2 vezes no iterator. Veja como ficou a saída do programa:

Sugiro verificar se o retorno da sua lista está trazendo os dados como você espera.

Boa sorte.

Criado 24 de fevereiro de 2009
Ultima resposta 24 de fev. de 2009
Respostas 4
Participantes 3