Ordenar listas, quem não passou por isso? A primeira vista parece algo difícil, um “bicho de sete cabeças”, mas depois que está funcionando se torna muito “fácil”. Porém, na maioria das vezes, montamos um algoritmo de ordenação especificamente para um tipo de lista, implementando Comparator; eu não gosto muito disso, então criei uma classe que ordene qualquer lista, por qualquer atributo, ficou bem legal e não preciso usar Comparator.

Obs.: Não fiz os testes para verificar se este tem o desempenho melhor do que com outras formar, porém já é uma mão na roda; além do mais, ele pode ser melhorado, talvez, algo que eu não me toquei, você possa melhorar.

Classe: Eu coloquei o nome nesta classe de Ordena e ela ficou assim.

import java.lang.reflect.Method;

import java.util.List;

/**

*

* @author Atila Raphael

*/

public class Ordena<T> {

@SuppressWarnings(“unchecked”)

public List<T> ordenarLista(List<T> list, String coluna) throws Exception{

for (int i=0; i<list.size(); i++) {

T t = list.get(i);

Method meto1 = t.getClass().getMethod(coluna, new Class[]{});

Comparable comp1 = (Comparable) meto1.invoke(t, new Object[]{});

for (int j=i+1; j<list.size(); j++){

T t2 = list.get(j);

Method meto2 = t2.getClass().getMethod(coluna, new Class[]{});

Comparable comp2 = (Comparable) meto2.invoke(t2, new Object[]{});

if (!meto1.getReturnType().toString().contains(“String”)){

if (comp1.compareTo(comp2) >= 1){

list.remove(j);

list.add(i, t2);

i–;

j = list.size();

}

} else {

String v = comp1.toString().toUpperCase();

Comparable cp = v;

String d = comp2.toString().toUpperCase();

Comparable cp2 = d;

if (cp.compareTo(cp2) >= 1){

list.remove(j);

list.add(i, t2);

i–;

j = list.size();

}

}

}

}

return list;

}

}

Como usar;

Ex.:

public class Pessoa {

private Integer codigo;

private String nome;

private Integer idade;

.

.

.

}

List<Pessoa> pessoas;

.

.

.

preenche a lista de pessoas

.

.

.

Ordena<Pessoa> ordena = new Ordena<Pessoa>();

try {

//Passo a lista e o nome do método que eu quero que minha lista seja ordenada.

pessoas = ordena.ordenarLista(pessoas, “getNome”);

} catch (Exception e) {

e.printStackTrace();

}

Pronto, minha lista está ordenada.

Se precisar inverter a ordem para decrescente, basta uma linha

Collections.reverse(pessoas);

Este método inverte a ordem da sua lista.

 

Download do projeto.

Participação em fóruns

Publicado: 30/11/2010 em Licenciatura

No meu curso de Licenciatura em Informática, existem muitos fóruns para participar, nada mal, gosto de participar de fóruns, mas nem tudo são “flores” (é um termo feio para ser usado por homens, mas não achei outro melhor), “se tem alguma chance de piora, vai piorar” (Lei de Murphy); e piora, eles sempre pedem para comentar pelo menos a pastagem de 3 colegas, simples não é, não; ta todo mundo falando da mesma coisa, você comenta um beleza, comenta outro meu sem assunto, e como você vai comentar o terceiro, não tem mais nada para escrever, e o pior, agora apareceu um que vou te de comentar cinco; não são três, mas cinco; é um absurdo, porém, vou fazer o que? Não posso mudar o sistema, então devo me adequar a ele.

Como diria um meu ex professor, “A vida é assim.”

Até o próximo post.

Att.

Atila Raphael

Fiquei muito triste com uma noticia que tive, parece que não vai ter mais seminário este ano (período); no começo eu achava um tédio, mas depois, comecei a gostar das apresentações; e logo agora, eles não colocaram outro neste semestre. Fazer o que! Próximo período tem mais, com certeza vai ser ainda melhor, e vai ter muito mais coisas (novidades) para postar.

Até o próximo post.

Att.

Atila Raphael

Seminário ORTE I

Publicado: 07/10/2010 em Licenciatura
Tags:, ,

Na semana passada, eu meus colegas Arindo(Ausente), Edgard, Maicon e Mirella, apresentamos um trabalho a disciplina de Organização e Reflexão do Trabalho Escolar, uma disciplina meio chata, mas com trabalhos bem agradáveis.

O nosso trabalho foi visitar duas escolas, uma da rede pública e outra da rede privada, visualizar o espaço (tirar fotos) e fazer dez perguntas ao pedagogo de cada instituição, perguntas pertinentes a educação na escola do pedagogo, o Plano Político Pedagógico PPP da mesma, bem como a inclusão de alunos portadores de necessidades especiais PNE.

Foi um trabalho muito proveitoso, onde pudemos visualizar a educação de forma diferente, a maneira que é tratada e educação nas duas escolas, o corpo docente das mesmas, e a interação das escolas com a comunidade.

A apresentação do mesmo também foi muito boa, houve uma troca de experiências muito boa, e creio que o crescimento “educacional” e humano de cada um, tenha sido tão grande como o meu, pois via a educação com os olhos de um aluno, agora a vejo com os olhos de professor.

Att.

Atila Raphael

Testing

Publicado: 20/09/2010 em Teste

Olá, estou realizando uma tarefa não muito agradável, que é o testing, sempre quando chega a esta parte eu fico irritado, é muito ruim ficar simulando diversas situações, simular erros, problemas, tentar descobrir alguma dificuldade que o usuário possa ter, na boa, prefiro mil vezes programar no bloco de notas do que ficar testando sistema; é muito chato, principalmente quando dá algum problema, ai tenho que consertar no código e depois voltar e testar tudo de novo. Tem que ter uma pessoa para fazer e outra para testar, uma só fazendo tudo isso fica um tédio.

Já me disseram que TDD é muito bom. Quem sabe no próximo projeto!

Abs.
Atila Raphael

Olá Pessoal

Publicado: 16/09/2010 em Uncategorized

Primeiramente quero agradecer pela visita ao meu blog, como este é o meu primeiro post não vou escrever muita coisa, mas vou procurar postar algumas coisas importantes que presencio no meu dia-a-dia; principalmente as dificuldades que encontro quando estou programando e como eu faço para resolvê-los.

Fique a vontade para comentar, logo logo tem post novo!