0

我正在从网页中抓取一些数据,并希望将其保存在结构中。我的数据是日期/时间值对示例的集合:

Monday  07:15   312
Monday  07:20   553
Monday  09:55   312
Tuesday 09:55   312

我不需要存储日期,只需要存储星期几和 24 小时制。我希望能够查询此集合以获取下一对。例如,如果我查询它Tuesday, 07:00,我应该得到下一个最接近的记录,即Tuesday, 09:55

对于在不诉诸 SQLite 或其他类似方法的情况下存储这些信息的好方法,我感到非常迷茫。

4

3 回答 3

1

在 Java 中,我会选择树形图,其中我可以将月份中的日期存储为键,并将时间存储为其值。日期可以是一个枚举,存储星期一、星期二、星期三、星期四、星期五和星期六和星期日的七个值,而值可以是存储小时和分钟的时间戳。

该集合将是排序的哈希映射或树映射(或排序的 EnumMap,这将比其他两个选项更好)。

希望这可以帮助 :)

于 2013-03-24T07:40:25.080 回答
0

我接受了 Panky1986 的建议,并使用EnumMap包含 aTreeMap来存储小时和嵌套TreeMap在其中来存储分钟,而分钟又存储数据。

/* This is the enumeration which tracks the days */
public enum DAY {WEEKDAY, SATURDAY, SUNDAY};

/* This is the map that stores the timings */
private EnumMap<DAY, TreeMap<Integer, TreeMap<Integer, String>>> mapDays;
于 2013-03-24T14:06:28.503 回答
0

只是为了更清楚。使用枚举映射来存储您的数据。只需像这样修改您的枚举 public enum DAYTIME { MONDAY(System.currentTimeMillis()),TUESDAY(System.currentTimeMillis()),OTHER_WEEKDAYS(System.currentTimeMillis());

    DAYTIME(Long time) {
        this.time = time;
    }

    private final Long timeInMillis;

    public Long getTimeInMillis() {
        return time ;
    }
}

现在调用 DayTime 时将返回带有日期和当前时间戳的枚举。我认为这满足了时间存储方面的要求。

你的 EnumMap 会是这样的

private EnumMap<DAYTIME, Object> mapDays;

这里 Object 表示您希望保存在数据库中的任何数据,无论是另一个列表/地图/其他集合您现在需要编写一个实用程序,该实用程序将在枚举时间字段上对存储的地图进行排序。这样,您可以通过指定日期和时间来获取下一个元素。

于 2013-03-25T05:11:54.590 回答