domingo, 17 de agosto de 2008
Piadas de um computeiro: piada #1
Nenhum comentário :
Ordenação por mais de um campo
- Implementando a interface Comparable no objeto a ser comparado.
- Implementando um objeto comparador
Para a 1º situação você deve conforme a interface criar um método chamado compareTo, o retorno deste método deve ser um int (primitivo) onde deve conter o valor -1 se o objeto comparado foi menor do que o objeto atual, 0 se objeto for igual e 1 se o objeto for maior.
Para a situação 2 você deve fazer uma classe que implemente a interface Comparable como na situação 1.
para realizar a ordenação você deve utilizar um método estático da API Collections o SORT, este método sobrecarregado tem 2 implementações a primeira você passa a list que contém os seus objetos e ele coloca em ordem, lembrando que para ele fazer isto você deve implementar Comparable, caso contrário ele disparará uma exception, e a outra forma é passar a lista e o objeto comparador, desta forma você pode ordenar os seus objetos.
Mais ai vem um detalhe importante com a qual esta semana me deparei, precisei colocar não um só campo do objeto em ordem, mas sim 5 campos do objeto, como fazer isto? depois de pesquisar encontrei a solução a Apache tem uma API Common Collections e BeanUtil (veja as dependências) estas bibliotecas contém funções comuns e uma delas advinhem só, faz exatamente isto, segue um código de exemplo de ordenação por mais de um campo:
List
sortFields.add(new BeanComparator("nome"));
sortFields.add(new BeanComparator("sobrenome"));
ComparatorChain multiSort = new ComparatorChain(sortFields);
java.util.Collections.sort(clientes,multiSort);
O código acima faz a ordenação das lista de objetos clientes pelos campos nome e sobrenome, facilitando assim a ordenação de objetos.
espero que gostem da dica.
Marcadores: Apache , Desenvolvimento , Dicas de Programação , Java
2 comentários :
Pérolas da Programação
Pérola 1
Boolean.FALSE.toString ().toUpperCase ().equals ( meuObjeto.isControlado() )
Quando vi o código acima, já achei ridículo o fato do programador usar a expressão Boolean.FALSE.toString().toUpperCase() apenas para gerar uma string “FALSE”. Poderia ter sido mais simples escrever "FALSE".equals(meuObjeto.isControlado())
Provavelmente o desenvolvedor queria se prevenir. Vai que false resolve mudar de nome no meio do caminho! E daí eu me perguntei: porque ele está testando string? Daí encontrei a seguinte função:
public String isControlado () {
if ( this.getElementos () != null ) {
if ( this.getElementos ().size () > 0 ) {
return "TRUE";
}
return "FALSE";
}
return "FALSE";
}
Perfeito. Porque usar lógica booleana?
Pérola 2
public List procuraPorExemplo(int arg0, boolean arg1){
return super.procuraPorExemplo(arg0, arg1);
}
Pérola 3
sem comentários
public static boolean verificaAMaiorB(int a, int b) {
boolean resultado = false;
if (a > b) {
resultado = true;
}
return resultado;
}
Pérola 4
if ( objeto != null ) {
lista = procura( objeto );// XXX
} else {
lista = procura ( null );
}
Pérola 5
if ( comandoEscala.equals ( "alterar" ) == Boolean.FALSE ){
....
}
retirado do http://www.log4dev.com/
Marcadores: Java
Nenhum comentário :
sexta-feira, 8 de agosto de 2008
Apache Mina
Algo que também facilita muito a utilização do Mina é que a ele pode ser integrada a utilização de filtros, estarei postando aqui o código de exemplo realizado por mim juntamente com o Apache Mina.
Um framework que realmente abstrai com facilidade a utilização da Java NIO, postarei posteriormente as minhas experiências com este framework.
Marcadores: Apache , Desenvolvimento , Frameworks , Java
Nenhum comentário :