Tôi đang viết một cấu trúc Lịch biểu trong Java. Tôi có một Hashtable với enum Day là Key và danh sách các timerang là giá trị. Như thế này:Enum là khóa của HashTable
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
private Hashtable<Day,TimeRanges> _applyCalendar;
nơi TimeRanges lớp là ...
public class TimeRanges implements List<TimeRange> {
Khi tôi thêm yếu tố để _appleCalendar Tôi làm điều này:
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);
}
}
}
Vấn đề của tôi là phương pháp chứa() doesn không làm việc đúng. HashTable không thể tìm thấy phần tử hiện có trong Hashtable, tất cả thời gian nhập trong điều kiện đầu tiên: S
Có cách nào để thực hiện điều này mà không cần khai báo Ngày làm lớp và triển khai comareTo() ??
Tại sao bạn sử dụng 'Hashtable'? – skaffman
Với khóa Enum bạn cũng có tùy chọn sử dụng (thường bị bỏ qua) [EnumMap] (http://docs.oracle.com/javase/6/docs/api/java/util/EnumMap.html), nó được hỗ trợ bởi một mảng và tất cả các hoạt động là thời gian không đổi. Không phải là nó sẽ tạo nên sự khác biệt ở đây, nhưng cũng chẳng tốn kém gì cả. – Dmitri