сортировать одну строку в java

<p>есть ли родной способ сортировки строки по ее содержимому в java? например.</p><pre><code>string s = "edcba" -> "abcde" </code></pre>

<p><code>tochararray</code> с последующим <code>arrays.sort</code> с последующим вызовом конструктора string:</p><pre><code>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); } } </code></pre><p>правка: как указывает tackline, это потерпит неудачу, если строка содержит суррогатные пары или действительно составные символы (accent + e как отдельные символы) и т.д. в этот момент становится намного сложнее ... надеюсь, вам это не нужно :) кроме того, это просто порядок по порядку, без учета заглавных букв, акцентов или чего-либо еще.</p>

<p>нет, здесь нет встроенного метода string. вы можете преобразовать его в массив символов, отсортировать его с помощью arrays.sort и преобразовать его обратно в строку.</p><pre><code>string test= "edcba"; char[] ar = test.tochararray(); arrays.sort(ar); string sorted = string.valueof(ar); </code></pre><p>или, если вы хотите корректно работать с такими специфическими для локали вещами, как прописные и акцентированные символы:</p><pre><code>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é" } } </code></pre>

<p>в java 8 это можно сделать с помощью:</p><pre><code>string s = "edcba".chars() .sorted() .collect(stringbuilder::new, stringbuilder::appendcodepoint, stringbuilder::append) .tostring(); </code></pre><p>несколько более короткая альтернатива, которая работает с потоком строк длиной один (каждый символ в несортированной строке преобразуется в строку в потоке):</p><pre><code>string sorted = stream.of("edcba".split("")) .sorted() .collect(collectors.joining()); </code></pre>

<p>более грубый подход без использования метода arrays.sort. это использует вставку сортировки.</p><pre><code>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); } </code></pre>

<p> <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/string.html#tochararray%28%29">преобразовать в массив символов</a> → <a href="http://docs.oracle.com/javase/6/docs/api/java/util/arrays.html#sort%28char%5b%5d%29">сортировать</a> → <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/string.html#string%28char%5b%5d%29">преобразовать обратно в строку</a> :</p><pre><code>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" </code></pre>

<pre><code> string a ="dgfa"; char [] c = a.tochararray(); arrays.sort(c); return new string(c); </code></pre><p>обратите внимание, что это не будет работать должным образом, если это строка со смешанным регистром (она будет помещаться в верхнем регистре, а не в нижнем). вы можете передать компаратор в метод sort, чтобы изменить это.</p>

<p>процедура :</p><ol> <li>сначала преобразовать строку в массив символов</li> <li>затем отсортируйте массив символов</li> <li>преобразовать массив символов в строку</li> <li>распечатать строку</li> </ol><p>фрагмент кода:</p><pre><code> string input = "world"; char[] arr = input.tochararray(); arrays.sort(arr); string sorted = new string(arr); system.out.println(sorted); </code></pre>

<p>вопрос: сортировка строки в java</p><pre><code>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); } } </code></pre>