Tengo un List<String>objeto que contiene nombres de países. ¿Cómo puedo ordenar esta lista alfabéticamente?
java
list
sorting
collections
alphabetical
Lennie
fuente
fuente

Respuestas:
Suponiendo que se trata de cadenas, utilice el método estático conveniente
sort...fuente
Solución con Collections.sort
Si se ve obligado a usar esa Lista, o si su programa tiene una estructura como
entonces la respuesta de Thilos será la mejor manera de hacerlo. Si lo combina con el consejo de Tom Hawtin - tackline , obtendrá:
Solución con un TreeSet
Si es libre de decidir, y si su aplicación puede volverse más compleja, puede cambiar su código para usar un TreeSet. Este tipo de colección clasifica sus entradas justo cuando se insertan. No es necesario llamar a sort ().
Nota al margen sobre por qué prefiero el TreeSet
Esto tiene algunas ventajas sutiles, pero importantes:
TreeSet<String> countyNamesy sabe al instante: esta es una colección ordenada de cadenas sin duplicados, y puedo estar seguro de que esto es cierto en todo momento . Tanta información en una breve declaración.Usar la colección correcta para la tarea correcta es una clave para escribir código corto y libre de errores. No es tan demostrativo en este caso, porque solo guarda una línea. Pero he dejado de contar la frecuencia con la que veo a alguien usando una Lista cuando quieren asegurarse de que no haya duplicados, y luego construir esa funcionalidad ellos mismos. O peor aún, usando dos listas cuando realmente necesita un mapa.
No me malinterpreten: el uso de Collections.sort no es un error o una falla. Pero hay muchos casos en que TreeSet es mucho más limpio.
fuente
Puede crear una nueva copia ordenada usando Java 8 Stream o Guava:
Otra opción es ordenar en el lugar a través de la API de colecciones:
fuente
¡Mejor tarde que nunca! Así es como podemos hacerlo (solo con fines de aprendizaje):
fuente
En una línea, usando Java 8:
fuente
Utilice los dos argumentos para de
Collections.sort.ComparatorQuerrá un adecuado que trate el caso apropiado (es decir, hace un pedido léxico, no UTF16), como el que se puede obtener a través dejava.text.Collator.getInstance.fuente
A menos que esté clasificando cadenas solo en inglés sin acento, probablemente quiera usar a
Collator. Clasificará correctamente los signos diacríticos, puede ignorar mayúsculas y minúsculas y otras cosas específicas del idioma:Puede establecer la fuerza del intercalador , ver el javadoc.
Aquí hay un ejemplo para el eslovaco donde
Šdebería ir despuésS, pero en UTFŠestá en algún lugar despuésZ:fuente
Esto es lo que buscas
fuente
Al usar
Collections.sort(), podemos ordenar una lista.salida:
fuente
alfabeto descendente:
fuente
Lo mismo en JAVA 8: -
fuente
fuente
Puedes intentar usar un método que hice.
String key- será el orden que desee y en este caso en orden alfabético. Solo pon "abc ...".String list[]- la lista que desea ordenar con la tecla.int index- Establecer como 0, establecerá el desplazamiento de la clave.fuente