Ola galera,
como fasso para ordenar uma lista de string por ordem alfabetica?
Ola galera,
como fasso para ordenar uma lista de string por ordem alfabetica?
Quando você diz “lista de String’s”, você se refere a um objeto List< String > mesmo ou o que?
O método sort de Collections não te ajuda?
Algo do tipo:
List< String > namesList = new List< String >();
namesList.add("ze");
namesList.add("bia");
namesList.add("jimmy");
Collections.sort(namesList);
Se você quer a ordem alfabética igual você encontra num dicionário, use um Collator.
List<String> suaLista = new List<String>();
//Código que carrega a lista.
Collections.sort(suaLista, Collator.getInstance());
Para ordenar um array, use o método Arrays.sort
String[] anArray = new String[] {“Oswald”, “Óstia”, “Ana”, “Ângstron”}
Arrays.sort(anArray, Collator.getInstance());
Na lista acima, se você usar o comparador default do String, você verá que as palavras Ângstron e Óstia irão para o final da lista. Com o Collator, Ângstron ficará depois de Ana, e Óstia depois de Oswald, como seria num dicionario aqui do Brasil.
Esse ViniGodoy, tem que escrever artigos… Muito bom amigo
Add Favoritos!
Po valeu pela explicação,
…mas e se esse list for preechido por objetos (SimpleValue) q contem duas string, um “key” e um “value”, como fasso pra ordenar pelo value?
Nesse caso, ou você implementa um Comparator, ou faz a sua classe implementar Comparable.
Use o Comparable se você quiser que sua classe se ordene assim por default (como é o caso do String).
Use o Comparator se essa comparação é uma exceção, como o caso do Collator (que é um tipo de Comparator).
Por exemplo:
[code]public class SimpleValue implements Comparable<SimpleValue> {
String key;
String value;
public SimpleValue(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() { return key; }
public String getValue() { return value; }
public int compareTo(SimpleValue o) {
return Collator.getInstance().compare(value, o.value);
}
}[/code]
Agora você pode ordenar um List<SimpleValue> usando o método Collections.sort() normalmente!
Bom dia…
Eu costumo utilizar a class TreeSet, veja se te ajuda em algo, ela implementa as interfaces abaixo:
Serializable, Cloneable, Iterable, Collection, NavigableSet, Set, SortedSet, a medida que você adiciona ela já os coloca em ordem alfabética.
Rodrigo
import java.util.TreeSet;
public class Teste
{
public static void main(String[] args)
{
TreeSet tS = new TreeSet();
tS.add("Claudio");
tS.add("Zaza");
tS.add("Rodrigo");
tS.add("Washington");
tS.add("Barbara");
tS.add("Ellen");
tS.add("Ângstron");
tS.add("Óstia");
tS.add("1234555");
System.out.println(tS);
}
}
Só cuidado, pois pela definição do set, você não poderá ter repetições do mesmo valor.
Se tiver elementos repetidos (ou no caso da classe SimpleValue, valores repetidos mesmo para chaves diferentes), o Set descatará as repetições e manterá apenas o último elemento adicionado.
No caso o TreeSet, elementos repetidos não são elementos com hashs iguais, e sim aqueles que tiverem o resultado da comparação igual à zero.
Falando em artigos, tem um sobre o assunto aqui: