繁体   English   中英

添加后,未对TreeMap中用作键的枚举进行排序

[英]Enum used as key in TreeMap not sorted after adding

我正在使用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";
    }
},

// 等等

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

如果不是枚举,而是我要实现compareto的类,我可以为枚举做类似的事情吗?

枚举已经实现Comparable 它使用定义枚举常量的顺序,但是可悲的是您不能覆盖compareTo方法来实现字典顺序,因为它被定义为final

但是您可以自定义Comparator 传递TreeMap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM