Sort a single String in Java

后端 未结 10 956
误落风尘
误落风尘 2020-11-28 18:15

Is there a native way to sort a String by its contents in java? E.g.

String s = \"edcba\"  ->  \"abcde\"
10条回答
  •  无人及你
    2020-11-28 18:46

    No there is no built-in String method. You can convert it to a char array, sort it using Arrays.sort and convert that back into a String.

    String test= "edcba";
    char[] ar = test.toCharArray();
    Arrays.sort(ar);
    String sorted = String.valueOf(ar);
    

    Or, when you want to deal correctly with locale-specific stuff like uppercase and accented characters:

    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é"
      }
    }
    

提交回复
热议问题