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

时间:2016-01-19 23:55:13

标签: java sorting enums hashmap treemap

我正在使用TreeMap,其中key是枚举,值是整数。

     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
     }

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";
    }
},

//等等

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

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

1 个答案:

答案 0 :(得分:5)

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

但您可以pass TreeMap EmptyView自定义Comparator