在TreeMap中用作键的枚举在添加后未排序

Saa*_*aad 0 java sorting enums hashmap treemap

我使用的是TreeMap,其中key是枚举,value是整数.

     TreeMap<Ingredient, Integer> inv;

     public Inventory(){
        inv = new  TreeMap<Ingredient, Integer>();
        inv.put(Ingredient.COFFEE, 10);
        inv.put(Ingredient.DECAF_COFFEE, 10);
        // and so on
     }
Run Code Online (Sandbox Code Playgroud)

Ingredient类定义为

public enum Ingredient {

COFFEE {
    public double getCost() {
        return 0.75;
    }

    @Override
    public String toString() {
        return "Coffee";
    }
},
DECAF_COFFEE {
    public double getCost() {
        return 0.75;
    }

    @Override
    public String toString() {
        return "Decaf Coffee";
    }
},
Run Code Online (Sandbox Code Playgroud)

// 等等

但是,当我在添加所有成分后迭代树形图时,枚举键不会按字典顺序打印.

如果不是枚举它是一个我将实现比较的类,我可以为枚举做类似的事情吗?

toK*_*use 5

Enum已经实现了Comparable.它使用枚举常量定义的顺序,但遗憾的是你不能覆盖compareTo-method来实现字典顺序,因为它被定义为final.

但是你可以自定义Comparator 传递TreeMap.