[quote=Murilo_Ferreira][quote=Rodrigo Sasaki][code]import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Teste{
public static void main(String[] args) throws Exception{
List<String> lista = new ArrayList<String>();
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
Collections.sort(lista, new Comparator<String>(){
@Override
public int compare(String o1, String o2){
Long one = Long.parseLong(o1);
Long other = Long.parseLong(o2);
return one.compareTo(other);
}
});
System.out.println(lista);
}
}[/code][/quote]
Essa sim seria a melhor solução
[/quote]
Sim, e me desculpe Murilo, importei realmente o pacote errado naquela hora!
Vamos supor que eu tenha strings repetidas?
[code]
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class calcular{
public static void main(String[] args) throws Exception{
List<String> lista = new ArrayList<String>();
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
Collections.sort(lista, new Comparator<String>(){
@Override
public int compare(String o1, String o2){
Long one = Long.parseLong(o1);
Long other = Long.parseLong(o2);
return one.compareTo(other);
}
});
System.out.println(lista);
}
} [/code]
Como implemento o TreeSet no meu código para que não se repita?
[quote=entanglement]Existe um construtor de TreeSet que recebe um Comparator.
Veja em:
http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#TreeSet(java.util.Comparator)[/quote]
Valeu a dica mas não consegui implementar, não entendi os parâmetros passados no material.
OK, mas só pra lembar Set não deixa repetir valores duplicados.
[quote=wellington.nogueira][quote=jkrfabio][quote=entanglement]Existe um construtor de TreeSet que recebe um Comparator.
Veja em:
http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#TreeSet(java.util.Comparator)[/quote]
Valeu a dica mas não consegui implementar, não entendi os parâmetros passados no material.[/quote]
Onde está List<String> lista = new ArrayList<String>();
troque por Set<String> lista = new TreeSet(new Comparator<String>(){//...});
e implemente o comparator de modo similar ao que foi feito ao usar o Collections.sort(…).[/quote]
[code]
Set lista1 = new TreeSet(new Comparator()
{
@Override
public int compare(String o1, String o2) {
Long one = Long.parseLong(o1);
Long other = Long.parseLong(o2);
return one.compareTo(other);
}
}
);[/code]
o que faltou eu implementar?
importou
import java.util.Comparator;
Porque você fala “o que faltou eu implementar?” tá dando erros ?
[quote=Murilo_Ferreira]importou
import java.util.Comparator;
Porque você fala “o que faltou eu implementar?” tá dando erros ?[/quote]
Porque nunca usei este método
meu código atual
[code]
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class calcular {
public static void main(String[] args) throws Exception {
List<String> lista = new ArrayList<String>();
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
Set<String> lista1 = new TreeSet(new Comparator<String>()
{
@Override
public int compare(String o1, String o2) {
Long one = Long.parseLong(o1);
Long other = Long.parseLong(o2);
return one.compareTo(other);
}
}
);
System.out.println(lista1);
}
}[/code]
Mas tá todo sublinhado de amarelo, falta pouco p acabar essa dor de cabeça…
Ué, só faltou o tipo do TreeSet. Mude de:Set<String> lista1 = new TreeSet(new Comparator...)
para: Set<String> lista1 = new TreeSet<String>(new Comparator...)
E como sua próxima dúvida pode ser: “Como eu faço pra adicionar os itens da lista no TreeSet?”
Já adianto a resposta: lista1.addAll(lista);
Tio, basta você copiar os dados de “lista” para “lista1”.
Eles não serão magicamente transferidos de uma variável para outra, só porque você quer.
Você está se embananando (como de costume) ao criar 2 variáveis com nomes parecidos.
Então você está imprimindo uma determinada coisa achando que é outra.
Dica: Evite dar nomes confusos e parecidos às suas variáveis. No seu caso, o ideal era chamar a variável de tipo Set de “conjunto”, não de “lista1”.
Para copiar os dados, existe um método chamado addAll:
http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#addAll(java.util.Collection)
(Ele requer um java.util.Collection, mas acho que você deve saber que um java.util.List herda de java.util.Collection).
Hahaha, resolvido: Ordena as strings, e não repete valores iguais
[code]
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class calcular {
public static void main(String[] args) throws Exception {
List<String> lista = new ArrayList<String>();
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
Set<String> lista1 = new TreeSet<String>(new Comparator<String>()
{
@Override
public int compare(String o1, String o2) {
Long one = Long.parseLong(o1);
Long other = Long.parseLong(o2);
return one.compareTo(other);
}
}
);
lista1.addAll(lista);
System.out.println(lista1);
}
}[/code]
Obrigado a todos.
[quote=jkrfabio]
Mas tá todo sublinhado de amarelo, falta pouco p acabar essa dor de cabeça…[/quote]
Código sublinhado amarelo é muito comun, isso não quer dizer que é um problema. o que não pode ter é códigos sublinhado vermelho.
[quote=jkrfabio][quote=entanglement]Existe um construtor de TreeSet que recebe um Comparator.
Veja em:
http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#TreeSet(java.util.Comparator)[/quote]
Valeu a dica mas não consegui implementar, não entendi os parâmetros passados no material.[/quote]
Onde está List<String> lista = new ArrayList<String>();
troque por Set<String> lista = new TreeSet(new Comparator<String>(){//...});
e implemente o comparator de modo similar ao que foi feito ao usar o Collections.sort(…).