packagecom.pcs.questoes;importjava.util.ArrayList;importjava.util.List;importcom.pcs.resposta.TiposRespostas;importcom.pcs.modelo.*;publicclassTiposQuestoes{publicvoidexerciciosTipoSimples(){TiposRespostastipos=newTiposRespostas();List<Fruta>listaFrutas=newArrayList<Fruta>();Frutal=newLaranja();l.setPreco("R$ 20,00");listaFrutas.add(l);Frutap=newPera();p.setPreco("R$ 10,00");listaFrutas.add(p);Frutap2=newPera();p.setPreco("R$ 11,00");listaFrutas.add(p2);Frutaf1=newLimao();f1.setPreco("R$ 5,00");listaFrutas.add(f1);Frutaf2=newLimao();f2.setPreco("R$ 5,00");listaFrutas.add(f2);List<Fruta>listaFrutasOrdenadasPreco=tipos.ordenaListaPorPreco(listaFrutas);// Ordenar por tipos em ordem alfabética (Laranja, Limao, Pera) e ordenar dentro dos tipos por preço. List<Fruta>listaFrutasOrdenadasPorTipoePreco=tipos.ordenaListaPorTipoEPreco(listaFrutas);}}
Meu primeiro método é ordenar a lista de preços, agora vem minha duvida: como ordenar uma lista de preços que está em String?
Existe alguma função para isto?
Comparator comparator = new ComparatorPreco();
Collections.sort(listaFrutas , comparator);
Mas tem que ser em String mesmo por causa dos “R$” =/
M
Murilo_Ferreira
Bom, o correto seria usar double para o campo preço, que você poderia ordenar da seguinte forma.
Comparator<Fruta> comparator = new Comparator<Fruta>(){publicintcompare(Frutaa,Frutab){
returna.getPreco().compareTo(b.getPreco());}
}
Collections.sort(listaFrutas,comparator);
Talvez uma maneira de resolver seria essa abaixo, porém resalto que o correto seria trabalhar com tipo double no preço.
[code]Comparator<Fruta> comparator=new Comparator<Fruta>(){public int compare(Fruta a, Fruta b){Double precoa=Double.parseDouble(a.getPreco().replac("R$ ","").repace(",","."));Double precob=Double.parseDouble(b.getPreco().replac("R$ ","").repace(",","."));return precoa.compareTo(precob);}}Collections.sort(listaFrutas , comparator);
[/code]
jkrfabio
Murilo_Ferreira:
Bom, o correto seria usar double para o campo preço, que você poderia ordenar da seguinte forma.
Comparator<Fruta> comparator = new Comparator<Fruta>(){publicintcompare(Frutaa,Frutab){
returna.getPreco().compareTo(b.getPreco());}
}
Collections.sort(listaFrutas,comparator);
Talvez uma maneira de resolver seria essa abaixo, porém resalto que o correto seria trabalhar com tipo double no preço.
[code]Comparator<Fruta> comparator=new Comparator<Fruta>(){public int compare(Fruta a, Fruta b){Double precoa=Double.parseDouble(a.getPreco().replac("R$ ","").repace(",","."));Double precob=Double.parseDouble(b.getPreco().replac("R$ ","").repace(",","."));return precoa.compareTo(precob);}}Collections.sort(listaFrutas , comparator);
[/code]
SIm tb acho que seria o correto, mas o treinamento quer isto rs fazer o que?
E não funcionou esse de cima.. me deram a dica de Simples brute force com permutações de números, poderia dar um exemplo disto?
M
Murilo_Ferreira
ok, porque não funcionou ? deu erro ? posta o código alterado aqui pra gente ver.
M
Murilo_Ferreira
“brute force com permutações de números”, vai sem bem mais complicado e talvez não funcione tão perfeitamente quanto a usar comparator.
freakazoid
Fala galera!
“R$” vc usa apenas para exibir o valor ao usuário final. Trate internamente o valor como double como foi dito pelo tiozao_bp, e para exibir use o nossos amigos Locale e NumberFormat