[RESOLVIDO] Problema de nullPointer ao usar BeanComparator + Collection.sort
4 respostas
A
andre07041989
Olá,
Estou com um problema de nullPointer.
Toda vez que executo o seguinte código da o erro de null pointer
ComparatorChain cc = new ComparatorChain();
cc.addComparator(new BeanComparator("nrDia"));
cc.addComparator(new BeanComparator("dsHorario"));
Collections.sort(meuObjeto, cc);
O erro ocorre na hora de fazer o collection sort, no caso a comparação
Existe alguma de resolver este problema?
Digo com classes nativas do java, se tiver, estarei no aguardo, enquanto isto vo continuar pesquisando.
Obrigado pela atenção.
EDIT - Você pode usar um BeanComparator, mas deve usar o segundo parâmetro. Vou tentar montar um exemplo.
A
andre07041989
Cara eu fiz um for e verifico se tem alguma das variáveis vindo como null ai eu set um valor string vazia setDsHorario("") e um valor para setNrDia((float) 0), claro que não é a forma correta, “gambia”, o que não é o correto. Mas infelizmente o tempo vence então não pesquisei muito.
Mas mesmo assim eu gostaria de ver o seu código, talvez eu implemente ele ao invés do meu no projeto depois, se puder add o fonte ai eu ficaria agradecido e o pessoal do fórum ai também.
Flw!
~packageguj;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importorg.apache.commons.beanutils.BeanComparator;importorg.apache.commons.collections.comparators.ComparatorChain;publicclassExemploComparatorChain{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubComparatorChaincc=newComparatorChain();cc.addComparator(newBeanComparator("nome",newComparator<String>(){@Overridepublicintcompare(Stringo1,Stringo2){// null vem antes de tudoif(o1==null&&o2==null)return0;if(o1==null&&o2!=null)return-1;if(o1!=null&&o2==null)return+1;returno1.compareTo(o2);}}));cc.addComparator(newBeanComparator("id"));List<InfoCliente>clientes=newArrayList<InfoCliente>();// clientes.add (new InfoCliente (null, 100));clientes.add(newInfoCliente("Jose",200));clientes.add(newInfoCliente("Aparecida",300));clientes.add(newInfoCliente(null,400));Collections.sort(clientes,cc);System.out.println(clientes);}}