Respuestas:
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 un String
... ¿qué esperarías toString()
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.
String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
O, cuando desee tratar correctamente con cosas específicas de la localidad como mayúsculas y caracteres acentuados:
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;
public class Test
{
public static void main(String[] args)
{
Collator collator = Collator.getInstance(new Locale("fr", "FR"));
String original = "éDedCBcbAàa";
String[] split = original.split("");
Arrays.sort(split, collator);
String sorted = "";
for (int i = 0; i < split.length; i++)
{
sorted += split[i];
}
System.out.println(sorted); // "aAàbBcCdDeé"
}
}
En Java 8 se puede hacer con:
String s = "edcba".chars()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
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:
String sorted =
Stream.of("edcba".split(""))
.sorted()
.collect(Collectors.joining());
Convertir a matriz de caracteres → Ordenar → Convertir de nuevo a Cadena :
String s = "edcba";
char[] c = s.toCharArray(); // convert to array of chars
java.util.Arrays.sort(c); // sort
String newString = new String(c); // convert back to String
System.out.println(newString); // "abcde"
Un enfoque más crudo sin usar el método sort Arrays.sort. Esto está usando el tipo de inserción.
public static void main(String[] args){
String wordSt="watch";
char[] word=wordSt.toCharArray();
for(int i=0;i<(word.length-1);i++){
for(int j=i+1;j>0;j--){
if(word[j]<word[j-1]){
char temp=word[j-1];
word[j-1]=word[j];
word[j]=temp;
}
}
}
wordSt=String.valueOf(word);
System.out.println(wordSt);
}
String a ="dgfa";
char [] c = a.toCharArray();
Arrays.sort(c);
return new String(c);
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.
Procedimiento:
Fragmento de código:
String input = "world";
char[] arr = input.toCharArray();
Arrays.sort(arr);
String sorted = new String(arr);
System.out.println(sorted);
Pregunta: ordenar una cadena en java
public class SortAStringInJava {
public static void main(String[] args) {
String str = "Protijayi";
// Method 1
str = str.chars() // IntStream
.sorted().collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
System.out.println(str);
// Method 2
str = Stream.of(str.split(" ")).sorted().collect(Collectors.joining());
System.out.println(str);
}
}
public static void main(String[] args) {
String str = "helloword";
char[] arr;
List<Character> l = new ArrayList<Character>();
for (int i = 0; i < str.length(); i++) {
arr = str.toCharArray();
l.add(arr[i]);
}
Collections.sort(l);
str = l.toString();
System.out.println(str);
str = str.replaceAll("\\[", "").replaceAll("\\]", "")
.replaceAll("[,]", "");
System.out.println(str);
}
Sin usar Colecciones en Java:
import java.util.Scanner;
public class SortingaString {
public static String Sort(String s1)
{
char ch[]=s1.toCharArray();
String res=" ";
for(int i=0; i<ch.length ; i++)
{
for(int j=i+1;j<ch.length; j++)
{
if(ch[i]>=ch[j])
{
char m=ch[i];
ch[i]=ch[j];
ch[j]=m;
}
}
res=res+ch[i];
}
return res;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("enter the string");
String s1=sc.next();
String ans=Sort( s1);
System.out.println("after sorting=="+ans);
}
}
Salida:
ingrese la cadena ==
clasificación
después de ordenar == ginorst