java – Enum作为HashTable的关键

我正在用Java编写Schedule结构.
我有一个Hashtable,枚举日为关键,时间范围列表为值.
像这样 :

public enum Day {
    SUNDAY,MONDAY,TUESDAY,WednESDAY,THURSDAY,FRIDAY,SATURDAY 
}

private Hashtable

其中TimeRanges类是……

public class TimeRanges implements List

当我向_appleCalendar添加元素时,我这样做:

public void addApplyDay(Day day,TimeRanges trs) {
    if (! _applyCalendar.contains(day)) {
        _applyCalendar.put(day,trs);
    } else {
        for ( TimeRange t : trs) {
            _applyCalendar.get(day).add(t);
        }
    }

}

我的问题是方法contains()不能正常工作.
HashTable无法在哈希表中找到现有元素,所有时间都输入第一个条件:S

有没有办法做到这一点,而不应该将Day声明为类并实现comareto()??

最佳答案
我想你想使用.containsKey()而不是contains(). contains()将搜索实际对象,而containsKey()将搜索键.

public void addApplyDay(Day day,TimeRanges trs) {
    if (! _applyCalendar.containsKey(day)) { // << use containsKey
        _applyCalendar.put(day,trs);
    } else {
        for ( TimeRange t : trs) {
            _applyCalendar.get(day).add(t);
        }
    }

}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...