Oredenar lista de Strings

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);
1 curtida

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 :smiley:

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!

1 curtida

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: