engfelipeoliveira:
Boa tarde,
Supondo que eu tenho uma classe Carro (por exemplo), com dois atributos id e nome.
Caso eu tenha o número do id é possível recuperar o nome?
Por exemplo, tenho os registros abaixo. Se quisesse recuperar o nome do carro com id = 3.
1 - Astra
2 - Gol
3 - Uno
4 - Fusca
Consigo isso apenas via SQL?
Obrigado pela atenção...
Bom como o sergio acabou de me dar uma luz, para esse mesmo problema que vc esta tendo... vai ai minha solução...
1° criar uma Interface chamada filter
public interface Filter<T> {
public boolean match (T object);
}
2° criar uma classe que aplique o filtro
public class CollectionUtils {
public static <T> Collection<T> filter(Collection <T> candidates, Filter<T> filter) {
for (Iterator it = candidates.iterator(); it.hasNext(); )
if (!filter.match(it.next()))
it.remove(); //se não passar pelo filtro é removido da lista
return candidates;
}
}
3° criar uma coleção para seus objetos (vc pode consultar a lista de um banco, ou de onde for ^^)
List<Carro> carros = new ArrayList<Carro>();
carros.add(new Carro(1,"Astra");
carros.add(new Carro(2,"Gol");
carros.add(new Carro(3,"Uno");
carros.add(new Carro(4,"Fusca");
carros.add(new Carro(5,"Palio");
carros.add(new Carro(6,"Parati");
4° por fim, vc pode FILTRAR a lista como quiser (Lembre-se, filtrar não é consultar, o filtro remove os itens que não esta no filtro, se quiser continuar com a lista original, terá que fazer clone da lista, por isso sempre envio "carros.clone()" no lugar de "carros")
//Filtro para ID = 3
Filter<Carro> apenasId3 = new Filter<Carro> {
public boolean match(Carro carro) {
return carro.getId() == 3;
}
};
//Filtro para carros que iniciam com "P"
Filter<Carro> iniciaComP = new Filter<Carro> {
public boolean match(Carro carro) {
return carro.getNome().toLowerCase().startWith("p");
}
};
//Estou enviado carros.clone() no lugar de carros,
//apenas pq quero manter a lista original, para realizar mais de 1 filtro
for(Carro carro: CollectionUtils.filter(carros.clone(), iniciaComP))
System.out.println(carro.getNome()); //so aparece os carros que inicam com p
for(Carro carro: CollectionUtils.filter(carros.clone(), apenasId3))
System.out.println(carro.getNome()); //so aparece os carros com ID = 3