Java 添加后未排序用作树映射中键的枚举
我使用的是一个树映射,其中键是一个枚举,值是一个整数Java 添加后未排序用作树映射中键的枚举,java,sorting,enums,hashmap,treemap,Java,Sorting,Enums,Hashmap,Treemap,我使用的是一个树映射,其中键是一个枚举,值是一个整数 TreeMap<Ingredient, Integer> inv; public Inventory(){ inv = new TreeMap<Ingredient, Integer>(); inv.put(Ingredient.COFFEE, 10); inv.put(Ingredient.DECAF_COFFEE, 10); /
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
}
//等等
但是,当我在添加所有成分后迭代树映射时,枚举键不会按字典顺序打印
如果不是enum,而是一个我将实现compareto的类,那么我可以为enum执行类似的操作吗?已经实现了。它使用枚举常量的定义顺序,但遗憾的是,您无法覆盖compareTo
-方法来实现字典顺序,因为它被定义为final
但是您可以自定义已实现的树映射。它使用枚举常量的定义顺序,但遗憾的是,您无法覆盖compareTo
-方法来实现字典顺序,因为它被定义为final
但是您可以自定义树映射,这意味着我定义枚举的顺序没有按排序顺序定义,这就是为什么遍历使用我定义的手动顺序。我知道,这意味着我定义枚举的顺序没有按排序顺序定义,这就是为什么遍历使用我定义的手动顺序。顺便说一句,枚举可以有字段和构造函数,也可以实现接口-最好在类的主体中声明一个cost字段和一个getCost方法。虽然没有比较器的TreeMap
使用枚举的自然顺序而不是任何属性的字典顺序是正确的,我不明白你是怎么注意到的。声明常量成分{COFFEE,DECAF_COFFEE}
的自然顺序与'C'相关顺便说一句的词典顺序完全匹配,枚举可以有字段和构造函数,也可以实现接口-最好在类的主体中声明一个cost字段和一个getCost方法。虽然没有比较器的TreeMap
使用枚举的自然顺序而不是任何属性的字典顺序是正确的,我不明白你是怎么注意到的。声明常量成分{COFFEE,DECAF_COFFEE}
的自然顺序与'C'的词典顺序完全匹配
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";
}
},