Ответы:
toCharArray
за которым Arrays.sort
следует вызов конструктора String:
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);
}
}
РЕДАКТИРОВАТЬ: как указывает tackline, это не удастся, если строка содержит суррогатные пары или действительно составные символы (акцент + e как отдельные символы) и т.д. В этот момент становится намного сложнее ... надеюсь, вам это не нужно :) Кроме того, это просто порядок по порядку, без учета заглавных букв, акцентов или чего-либо еще.
sorted
уже String
... что вы ожидаете toString()
от него?
char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
Нет встроенного метода String. Вы можете преобразовать его в массив символов, отсортировать его с помощью Arrays.sort и преобразовать обратно в строку.
String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
Или, если вы хотите правильно работать с вещами, зависящими от локали, такими как прописные буквы и символы с диакритическими знаками:
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é"
}
}
В Java 8 это можно сделать с помощью:
String s = "edcba".chars()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
Несколько более короткая альтернатива, которая работает с Stream of Strings длиной один (каждый символ в несортированной String преобразуется в String в Stream):
String sorted =
Stream.of("edcba".split(""))
.sorted()
.collect(Collectors.joining());
Преобразовать в массив символов → Сортировка → Преобразовать обратно в строку :
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"
Более грубый подход без использования метода sort Arrays.sort. Это использует сортировку вставкой.
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);
Обратите внимание, что это не будет работать должным образом, если это String со смешанным регистром (он будет ставить верхний регистр перед нижним). Вы можете передать компаратор методу Sort, чтобы это изменить.
Процедура :
Фрагмент кода:
String input = "world";
char[] arr = input.toCharArray();
Arrays.sort(arr);
String sorted = new String(arr);
System.out.println(sorted);
Вопрос: отсортировать строку в 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);
}
Без использования коллекций в 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);
}
}
Вывод:
введите строку ==
сортировка
после сортировки == ginorst