art*_*urn 5 java collections hashtable
我正在用Java编写Schedule结构.我有一个Hashtable,枚举日为关键,时间范围列表为值.像这样 :
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
private Hashtable<Day,TimeRanges> _applyCalendar;
Run Code Online (Sandbox Code Playgroud)
其中TimeRanges类是......
public class TimeRanges implements List<TimeRange> {
Run Code Online (Sandbox Code Playgroud)
当我向_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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是方法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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2570 次 |
| 最近记录: |