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

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

private Hashtable<Day,TimeRanges> _applyCalendar;

TimeRanges类在哪里...
public class TimeRanges implements List<TimeRange> {

当我向_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无法在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);
        }
    }

}

08-19 00:22