Salve Salve Rapazeada Boa,
este é meu primeiro Post, qualquer coisa errada me desculpem antecipadamente e me auxiliem para corrigir, e também sou iniciante em Java(mas sei um pouquinho para não pedir programas prontos, hehehe
Meu problema já vi parecido em alguns tópicos, mas não consegui resolvê-lo com eles.
Eu preciso gerar um relatório que imprima estes dados em ordem Crescente de Matricula e Descrecente de Data de Pagamento.
Bem, eu tenho a seguinte Classe
public class Funcionario {
private String empresa;
private String matricula;
private String nome;
private String pagamento
private Double salario;
/**
* Construtor Padrão, apenas para instaciar a classe
*/
public Funcionario() {};
/**
* Construtor para iniciar a classe já populando seus atributos
* @param empresa
* @param matricula
* @param nome
* @param pagamento
* @param salario
*/
public Funcionario(String empresa, String matricula, String nome, String pagamento, Double salario) {
this.empresa = empresa;
this.matricula = matricula;
this.nome = nome;
this.pagamento = pagamento;
this.salario = salario;
}
// Métodos Get e Set ...
public String toString(){
return "Empresa " + empresa + "\tMatricula " + matricula + "\tNome " + nome +
"\tPagamento " + pagamento + "\tSalario " + salario;
}
}
eu alimento o Objeto desta classe do Banco de Dados e retorno a Matricula como numeros armazenados como String e a Data de Pagamento como String também, no formato “dd/MM/yyyy”.
A Classe é essa:
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import br.com.teste1.XConnection;
public class SalarioArray {
public static void main(String[] args) throws Exception {
XConnection conexao = new XConnection();
ResultSet rsFuncionario;
int cont=0;
List<Funcionario> listaFuncionario = new ArrayList<Funcionario>();
List<Funcionario> listaTeste = new ArrayList<Funcionario>();
String consultaFuncionario = "SELECT EMPRESA, MATRICULA_COMPLETA, RTRIM(NOME) AS NOME, " +
" PAGAMENTO, SALARIO " +
"FROM FUNCIONARIO_SALARIO " +
"WHERE MATRICULA_COMPLETA IN ('1111111111', '2222222222', '3333333333', '4444444444', '5555555555)" +
"ORDER BY MATRICULA_COMPLETA DESC";
rsFuncionario = conexao.seleciona(consultaFuncionario);
while (rsFuncionario.next())
{
listaFuncionario.add(new Funcionario(
rsFuncionario.getString("EMPRESA"),
rsFuncionario.getString("MATRICULA_COMPLETA"),
rsFuncionario.getString("NOME"),
rsFuncionario.getString("PAGAMENTO"),
rsFuncionario.getDouble("SALARIO"))
);
cont++;
}
listaTeste = listaFuncionario;
for (Funcionario funcionario1 : listaFuncionario) {
System.out.println(funcionario1.toString());
}
for (int i=0; i<listaTeste.size(); i++) {
System.out.println(i + " - " + listaTeste.get(i).toString());
}
System.out.println("Quantidade de Registros " + cont);
conexao.fechaConexao();
}
}
A Classe acima funciona sem problemas, o listaFuncionario está sendo populado numa boa, porém não consigo ordenar pela Data de forma Descrecente.
Tentei assim logo após “listaTeste = listaFuncionario;”, mas não funcionou:
Collections.sort( listaTeste , new Comparator() {
public int compare(Object o1, Object o2) {
List<Funcionario> l1 = (List<Funcionario>) o1;
List<Funcionario> l2 = (List<Funcionario>) o2;
String n1 = (String) l1.get(1).getPagamento();
String n2 = (String) l2.get(1).getPagamento();
int ret = n1.compareTo(n2);
return ret;
}
}
);
Me dêem uma luz ae por favor, porque só consegui com um List simples, como List, e o Collections.sort simples. Se eu tento ordenar assim, Collections.sort((List)listaBeneficiario); , também não funciona.
O erro é o mesmo com .sort simples e com o .sort com dois parâmetros: " Exception in thread “main” java.lang.ClassCastException: saldodevedor.BeneficiarioEmbrapar "
Grato, …
.