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: