【发布时间】:2016-04-25 15:45:14
【问题描述】:
我正在使用 TreeMap,其中键是枚举,值是整数。
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
}
成分类定义为
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";
}
},
//等等
但是,当我在添加所有成分后迭代树形图时,枚举键不会按字典顺序打印。
如果不是枚举,而是我要实现比较的类,我可以为枚举做类似的事情吗?
【问题讨论】:
-
顺便说一句,枚举可以有字段和构造函数,并且可以实现接口——最好有一个成本字段和一个在类主体中声明的 getCost 方法。
-
虽然没有比较器的
TreeMap使用枚举的自然顺序而不是任何属性的字典顺序是正确的,但我不明白你是如何注意到的。声明常量Ingredient { COFFEE, DECAF_COFFEE }的自然顺序与'C' < 'D'的字典顺序完全匹配……
标签: java sorting enums hashmap treemap