domingo, 17 de agosto de 2008

Piadas de um computeiro: piada #1

domingo, 17 de agosto de 2008
Mouse não encontrado bater no gato?


Nenhum comentário :

Ordenação por mais de um campo

domingo, 17 de agosto de 2008
Algo comum no desenvolvimento java é a necessidade de ordenar objetos, o java com a API collections dele disponibiliza formas de efetuar esta tarefa, você pode fazer isto:
  1. Implementando a interface Comparable no objeto a ser comparado.
  2. 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 = new ArrayList();

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.



2 comentários :

Pérolas da Programação

domingo, 17 de agosto de 2008

Pérola 1

Essa é na verdade um par de pérolas.

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/



Nenhum comentário :

sexta-feira, 8 de agosto de 2008

Apache Mina

sexta-feira, 8 de agosto de 2008
Estou desenvolvendo um anti-spam que atualmente esta usando um pool de thread. Em busca de desempenho, estava pesquisando sobre a biblioteca do java a "nio" que o foco em performance, e achei um pouco complicado alguns conceitos até encontrar o "Apache Mina", este framework ajuda no uso do java seguindo o tutorial consegui implementar um servidor de eco muito facilmente, e caso precise de manter a sessão da conexão podemos usar um objeto session do 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.


Nenhum comentário :