atualizar uma lista com uma informação que vem de um framework de fora
Ordenar a lista por esse campo novo do item 2 (essa é minha duvida como ordenar a list por esse campo pois
no select não tem esse campo)
alguém poderia me ajudar e se o que fiz abaixo está certo ou tem outro jeito ???
abs
public class TestDb1 {
private String nome;
private String sobreNome;
private String login;
public TestDb1 (String nome,String sobreNome,String login){
this.nome = nome;
this.sobreNome= sobreNome;
this.login =login;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobreNome() {
return sobreNome;
}
public void setSobreNome(String sobreNome) {
this.sobreNome = sobreNome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("passo 1");
List<TestDb1> listas = new ArrayList<TestDb1>();
//essa lista iria no banco de dados buscar as informações
listas.add(new TestDb1("Meu","Nome",null));
listas.add(new TestDb1("Fulano","Tal",null));
listas.add(new TestDb1("LG","Video",null));
System.out.println("passo 2");
//só que falta o campo login que está em um metodo de um framework
List<TestDb1> listas1 = new ArrayList<TestDb1>();
//ler a lista do banco e cria outra lista com a informação do framework
for (TestDb1 object : listas) {
System.out.println("Nome="+object.getNome());
System.out.println("SobreNome="+object.getSobreNome());
System.out.println("Login="+object.getLogin());
System.out.println("====================================");
// passo o nome pro metodo e me retorna uma String
listas1.add(new TestDb1(object.getNome(),object.sobreNome,getLogin(object.getNome())));
}
//queria que saisse ordenado por login tem jeito ?????
for (TestDb1 testDb1 : listas1) {
System.out.println("Nome="+testDb1.getNome());
System.out.println("SobreNome="+testDb1.getSobreNome());
System.out.println("Login="+testDb1.getLogin());
System.out.println("+++++++++++++++++++++++++++++");
}
}
// simulando do framework
public static String getLogin(String login){
return "login";
}
}
public class ComparaTeste implements Comparator<String> {
//no caso, a classe String ja tem um metodo que se comporta
//como desejado para a implementacao do compare()
public int compare(String umTeste, String outroTeste) {
return umTeste.compareTo(outroTeste);
}
public static void main(String[] args) {
ArrayList<String> lista = new ArrayList<String>();
lista.add("ccc");
lista.add("aaa");
lista.add("bbb");
lista.add("zzz");
lista.add("xxx");
//Faz o trabalho sujo para voce
Collections.sort(lista, new ComparaTeste());
for (String s : lista) {
System.out.println(s);
//saida:
//aaa
//bbb
//ccc
//xxx
//zzz
}
}
}
na linha
Collections.sort(listas1, new ComparaTeste());
erro:
he method sort(List<T>, Comparator<? super T>) in the type Collections is not applicable for the arguments
(List<TestDb1>, ComparaTeste)
package br.com.comparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestDb1 {
private String nome;
private String sobreNome;
private String login;
public TestDb1 (String nome,String sobreNome,String login){
this.nome = nome;
this.sobreNome= sobreNome;
this.login =login;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobreNome() {
return sobreNome;
}
public void setSobreNome(String sobreNome) {
this.sobreNome = sobreNome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("passo 1");
List<TestDb1> listas = new ArrayList<TestDb1>();
//essa lista iria no banco de dados buscar as informações
listas.add(new TestDb1("Meu","Nome",null));
listas.add(new TestDb1("Fulano","Tal",null));
listas.add(new TestDb1("LG","Video",null));
System.out.println("passo 2");
//só que falta o campo login que está em um metodo de um framework
List<TestDb1> listas1 = new ArrayList<TestDb1>();
//ler a lista do banco e cria outra lista com a informação do framework
for (TestDb1 object : listas) {
System.out.println("Nome="+object.getNome());
System.out.println("SobreNome="+object.getSobreNome());
System.out.println("Login="+object.getLogin());
System.out.println("====================================");
// passo o nome pro metodo e me retorna uma String
listas1.add(new TestDb1(object.getNome(),object.sobreNome,getLogin(object.getNome())));
}
//queria que saisse ordenado por login tem jeito ?????
//Faz o trabalho sujo para voce
Collections.sort(listas1, new ComparaTeste()); ?????
for (TestDb1 testDb1 : listas1) {
System.out.println("Nome="+testDb1.getNome());
System.out.println("SobreNome="+testDb1.getSobreNome());
System.out.println("Login="+testDb1.getLogin());
System.out.println("+++++++++++++++++++++++++++++");
}
}
// simulando do framework
public static String getLogin(String login){
return "login";
}
}
--------------------
public class ComparaTeste implements Comparator<String> {
//no caso, a classe String ja tem um metodo que se comporta
//como desejado para a implementacao do compare()
public int compare(String umTeste, String outroTeste) {
return umTeste.compareTo(outroTeste);
}
public static void main(String[] args) {
ArrayList<String> lista = new ArrayList<String>();
lista.add("ccc");
lista.add("aaa");
lista.add("bbb");
lista.add("zzz");
lista.add("xxx");
//Faz o trabalho sujo para voce
Collections.sort(lista, new ComparaTeste());
for (String s : lista) {
System.out.println(s);
//saida:
//aaa
//bbb
//ccc
//xxx
//zzz
}
}
}
[quote=paribe]tentei usar o exemplo e me deu erro :
na linha
Collections.sort(listas1, new ComparaTeste());
erro:
he method sort(List<T>, Comparator<? super T>) in the type Collections is not applicable for the arguments
(List<TestDb1>, ComparaTeste)
[/quote]
Ah sim, é porque a sua classe do ComparatorTeste precisa implementar a interface Comparator especificando que será usada para comparar objetos da classe TesteDb1.
public class ComparaTeste implements Comparator<TesteDb1> {
public int compare(TesteDb1 umTeste, TesteDb1 outroTeste) {
//implemente aqui a logica para comparacao dos objetos TesteDb1
}
}