Сортировка одной строки в Java

Есть ли собственный способ сортировки строки по ее содержимому в java? Например

String s = "edcba" -> "abcde" 

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); } } 

РЕДАКТИРОВАТЬ: Как указывает точка привязки, это не сработает, если строка содержит суррогатные пары или даже составные символы (акцент + е как отдельные символы) и т. Д. В этот момент это становится намного сложнее … надеюсь, вам это не понадобится 🙂 Кроме того, это просто упорядочение по порядку, без учета капитализации, акцентов или чего-либо еще.

Нет встроенного метода 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ом строк длиной один (каждый символ в несортированной строке преобразуется в строку в streamе):

 String sorted = Stream.of("edcba".split("")) .sorted() .collect(Collectors.joining()); 
  String a ="dgfa"; char [] c = a.toCharArray(); Arrays.sort(c); return new String(c); 

Обратите внимание, что это будет работать не так, как ожидалось, если это смешанный случай String (он будет содержать верхний регистр до нижнего регистра). Вы можете передать компаратора методу Сортировки для его изменения.

Более необработанный подход без использования метода 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] 

Преобразовать в массив символов → Сортировка → Преобразовать обратно в строку :

 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" 

Процедура :

  1. Сначала преобразовать строку в массив char
  2. Затем отсортируйте массив символов
  3. Преобразование массива символов в строку
  4. Печать строки

Фрагмент кода:

  String input = "world"; char[] arr = input.toCharArray(); Arrays.sort(arr); String sorted = new String(arr); System.out.println(sorted); 
 public static void main(String[] args) { String str = "helloword"; char[] arr; List l = new ArrayList(); 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[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

  • Эквивалент Sprintf в Java
  • Является ли строка Java действительно неизменной?
  • Выключение строки C ++
  • Удалить пробел из строки в Objective-C
  • Как проверить, отображается ли один символ в строке?
  • Как обрезать пробелы из строки Python?
  • как преобразовать строку в дату в mysql?
  • Как передать переменные из awk в команду оболочки?
  • Конкатенация строк: оператор concat () vs "+"
  • Как объявить и использовать логические переменные в сценарии оболочки?
  • Строка макроопределения
  • Interesting Posts

    Почему этот код SSE в 6 раз медленнее без VZEROUPPER на Skylake?

    Как скопировать письмо Outlook Outlook в Excel с помощью VBA или макросов

    Почему метод global.asax Application_Error не использует исключения, предоставленные службой ASMX?

    Как создать multidimensional array ArrayList в Java?

    ConcurrentHashMap и Hashtable в Java

    Проблема использования одного экземпляра indexSearcher для нескольких запросов

    Как просмотреть содержимое запроса WS / WSS Websocket с помощью Firebug или другого?

    Являются ли массивы переданы по значению или переданы по ссылке в Java?

    Как предотвратить и / или обработать исключение StackOverflowException?

    Панель навигации под панелью инструментов

    Кнопка Аккордеон Bootstrap для переключения “data-parent” не работает

    Можно ли использовать jQuery для получения ширины элемента в процентах или пикселях в зависимости от того, что разработчик указал с помощью CSS?

    TypeError: не может использовать строковый шаблон для байтового объекта в re.findall ()

    vim change: функция x для удаления буфера вместо сохранения и выхода

    Как закрыть диалог jQuery в диалоговом окне?

    Давайте будем гением компьютера.