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では、月の日をキーとして、時刻をその値として格納できるツリーマップを選択します。日は、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日の7つの値を格納する列挙型にすることができ、値は時間と分を格納するタイムスタンプにすることができます。

コレクションは、ソートされたハッシュマップまたはツリーマップ(または他の2つのオプションよりも優れているソートされたEnumMap)になります。

お役に立てれば :)

于 2013-03-24T07:40:25.080 に答える
0

Panky1986のアドバイスを受けて、EnumMapを含むを使用しTreeMapて時間を格納し、その中にネスト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

より明確にするためだけに。列挙型マップを使用してデータを保存します。このパブリック列挙型のように列挙型を変更するだけです。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;

ここで、オブジェクトは、別のリスト/マップ/他のコレクションであるデータベースに保存するすべてのデータを表します。次に、列挙型時間フィールドに保存されたマップを並べ替えるユーティリティを作成する必要があります。このように、曜日と時刻を指定することで次の要素を取得できます。

于 2013-03-25T05:11:54.590 に答える