[Java]文字列配列を文字長さで昇順・降順ソートする方法

java

今回は、Java8のStreamを使って文字列配列の文字数でソートする方法です。
1byteも2byteも対応しています。バイト数ではなく文字数でのソートです。降順・昇順それぞれのパターンでソートしていきます。

[スポンサーリンク]

目次

昇順ソート
降順ソート

昇順ソート

文字数が少ない順にソートしていきます。1byte文字も2byte文字も関係なく純粋に文字数のみでソートしています。
comparingにString::lengthを指定して文字数ソートを実施しています。

import static java.util.Comparator.comparing;
public static void main( String[] args ) {

    String[] arrays = {"aaaaa", "bbb", "ああ", "1"};

    // 昇順
    Stream.of(arrays).sorted(comparing(String::length))
        .forEach(s -> System.out.println(s));
}
>実行結果
1
ああ
bbb
aaaaa

降順ソート

降順は、reversedを使っていきます。

import static java.util.Comparator.comparing;
public static void main( String[] args ) {

    String[] arrays = {"aaaaa", "bbb", "ああ", "1"};

    // 降順
    Stream.of(arrays).sorted(comparing(String::length).reversed())
        .forEach(s -> System.out.println(s));
}
>実行結果
aaaaa
bbb
ああ
1

さいごに

文字数でのソートって意外と使う場面があると思いますので覚えておいて損はないと思います!
ソートにはなるべくStreamを使っていきましょう!

それでは!