1. ホーム
  2. java

[解決済み] JavaでCollections.sort()を使用するには?

2022-03-04 14:19:42

質問

オブジェクトを取得しました Recipe を実装している Comparable<Recipe> :

public int compareTo(Recipe otherRecipe) {
    return this.inputRecipeName.compareTo(otherRecipe.inputRecipeName);
}

そうすることで、ソートされた List をアルファベット順に表示する方法です。

public static Collection<Recipe> getRecipes(){
    List<Recipe> recipes = new ArrayList<Recipe>(RECIPE_MAP.values());
    Collections.sort(recipes);
    return recipes;
}

しかし、今度は別のメソッドで、次のように呼び出すことができます。 getRecipesSort() 同じリストを、IDを含む変数と比較しながら、数値でソートしたい。さらに悪いことに、IDフィールドの型は String .

JavaでCollections.sort()を使ってソートを実行するにはどうすればよいですか?

どのように解決するのですか?

この方法を使用する Collections.sort(リスト,コンパレータ) . を実装します。 コンパレータ に渡し、それを Collections.sort().

class RecipeCompare implements Comparator<Recipe> {

    @Override
    public int compare(Recipe o1, Recipe o2) {
        // write comparison logic here like below , it's just a sample
        return o1.getID().compareTo(o2.getID());
    }
}

次に Comparator として

Collections.sort(recipes,new RecipeCompare());