13

次のような列挙型クラスがあります。

public enum Letter {
    OMEGA_LETTER("Omega"), 
    GAMMA_LETTER("Gamma"), 
    BETA_LETTER("Beta"), 
    ALPHA_LETTER("Alpha"), 

    private final String description;

    Letter() {
      description = toString();
    }

    Letter(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
}

コードの後半で、基本的に Letter 列挙型を反復処理し、そのメンバーをコンソールに出力します。

for (Letter letter : Letter.values()) {
System.out.println(letter.getDescription());
}

values() メソッドを使用すると、列挙型の順序付けられたビューが得られると思いました (ここで説明したように) が、ここではそうではありません。Letter enum クラス内で作成した順序で enum メンバーを取得するだけです。列挙型の値をアルファベット順に出力する方法はありますか? 別のコンパレータオブジェクトが必要ですか、それともこれを行う組み込みの方法はありますか? 基本的に、 getDescription() テキストに基づいて値をアルファベット順にソートしたいと思います。

Alpha
Beta
Gamma
Omega
4

5 に答える 5

5

Arrays.sort と独自のコンパレータを使用して並べ替えるだけです。

于 2009-11-14T17:12:47.597 に答える
0

java8のコンパレータでソートされた関数を使用できます

enumlist.stream()
.sorted(Comparator.comparing(Enum::toString)).collect(Collectors.toList());
于 2021-07-16T06:11:48.870 に答える