我正在用 Java 编写一个时间表结构。 我有一个哈希表,其中枚举日作为键,时间范围列表作为值。 像这样:
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);
}
}
}
关于java - 枚举作为哈希表的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9220072/