¿Hay una forma nativa de ordenar una cadena por su contenido en Java? P.ej
String s = "edcba" -> "abcde"
toCharArray
seguido de Arrays.sort
seguido de una llamada al constructor de cadenas:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
EDITAR: Como señala la línea de entrada, esto fallará si la cadena contiene pares sustitutos o caracteres compuestos (acento + e como caracteres separados), etc. En ese punto se vuelve mucho más difícil ... espero que no necesites esto :) Además, esto es solo ordenar por ordinal, sin tener en cuenta las mayúsculas, los acentos ni nada más.
sorted
ya es unString
... ¿qué esperaríastoString()
que hiciera?char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
No, no hay un método de cadena incorporado. Puede convertirlo en una matriz de caracteres, ordenarlo usando Arrays.sort y convertirlo nuevamente en una Cadena.
O, cuando desee tratar correctamente con cosas específicas de la localidad como mayúsculas y caracteres acentuados:
fuente
En Java 8 se puede hacer con:
Una alternativa un poco más corta que funciona con una secuencia de cadenas de longitud uno (cada carácter en la cadena sin clasificar se convierte en una cadena en la secuencia) es:
fuente
Convertir a matriz de caracteres → Ordenar → Convertir de nuevo a Cadena :
fuente
Un enfoque más crudo sin usar el método sort Arrays.sort. Esto está usando el tipo de inserción.
fuente
Tenga en cuenta que esto no funcionará como se espera si se trata de una cadena de mayúsculas y minúsculas (pondrá mayúsculas antes que minúsculas). Puede pasar un comparador al método Ordenar para cambiar eso.
fuente
Procedimiento:
Fragmento de código:
fuente
Pregunta: ordenar una cadena en java
fuente
fuente
Sin usar Colecciones en Java:
Salida:
fuente