LoginSignup
2
0

More than 3 years have passed since last update.

Javaで String (文字列) を昇順 (asc)・降順 (desc) にソートする

Last updated at Posted at 2021-02-25

はじめに:

やりたいこと

文字列 (String) をソートしたい。
・ "627118" -> (昇順) -> "112678"
・ "627118" -> (降順) -> "876211"
・ "Hello World" -> (昇順) -> " HWdellloor"
・ "Hello World" -> (降順) -> "roollledWH "

考察

昇順ソート

・これはすんなりいった。「やったこと」 の"StringSortAsc"を参照ください。
 String => char[] => Arrays.sort() => New String()

降順ソート

・一旦 String を char [] にして

// char 配列に変換 
char[] charArr = str.toCharArray();

・Arrays.sort の第2引数に Collections.reverseOrder() を渡す

import java.util.Collections;
...
Arrays.sort(charArr, Collections.reverseOrder());

・Error!!

// Main.java:10: error: no suitable method found for sort(char[],Comparator<Object>)

やったこと

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        System.out.println(StringSortAsc("627118"));
        System.out.println(StringSortDesc("627118"));
        System.out.println(StringSortAsc("Hello, World"));
        System.out.println(StringSortDesc("Hello, World"));
    }
    /** 
     * @param str  String value to asc-sort
     * @return     String sorted in ascending order 
     * String の昇順ソート
     */
    private static String StringSortAsc (String str) {
        // char 配列に変換 
        char[] charArr = str.toCharArray();
        // Arrays の sort APIを使ってソート
        Arrays.sort(charArr);
        // charArr から Stringに再変換
        return new String(charArr);
    }
    /** 
     * @param str  String value to desc-sort
     * @return     String sorted in descending order
     * @see https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html#reverse()
     * String の降順ソート
     */
    private static String StringSortDesc (String str) {
        // 一旦昇順にソート
        String sortedStr = StringSortAsc(str);
        StringBuilder sb = new StringBuilder(sortedStr);
        sb.reverse();
        return sb.toString();
    }
}

結果

112678
876211
 HWdellloor
roollledWH

終わりに

StringBuilder 使いましたがもっと早い方法があればコメントください。ありがとうございました。

関連記事:

JavaScriptで String (文字列) を昇順 (asc)・降順 (desc) にソートする

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0