Есть ли собственный способ отсортировать строку по ее содержимому в 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);
}
}
РЕДАКТИРОВАТЬ: как указывает tackline, это не удастся, если строка содержит суррогатные пары или действительно составные символы (акцент + e как отдельные символы) и т.д. В этот момент становится намного сложнее ... надеюсь, вам это не нужно :) Кроме того, это просто порядок по порядку, без учета заглавных букв, акцентов или чего-либо еще.
sorted
ужеString
... что вы ожидаетеtoString()
от него?char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
Нет встроенного метода String. Вы можете преобразовать его в массив символов, отсортировать его с помощью Arrays.sort и преобразовать обратно в строку.
Или, если вы хотите правильно работать с вещами, зависящими от локали, такими как прописные буквы и символы с диакритическими знаками:
источник
В Java 8 это можно сделать с помощью:
Несколько более короткая альтернатива, которая работает с Stream of Strings длиной один (каждый символ в несортированной String преобразуется в String в Stream):
источник
Преобразовать в массив символов → Сортировка → Преобразовать обратно в строку :
источник
Более грубый подход без использования метода sort Arrays.sort. Это использует сортировку вставкой.
источник
Обратите внимание, что это не будет работать должным образом, если это String со смешанным регистром (он будет ставить верхний регистр перед нижним). Вы можете передать компаратор методу Sort, чтобы это изменить.
источник
Процедура :
Фрагмент кода:
источник
Вопрос: отсортировать строку в java
источник
источник
Без использования коллекций в Java:
Вывод:
источник