3

Java SAX パーサーで巨大な xml ファイルを読み込んでいます: http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?format=xml (2.82 MB)

このファイルには数千の「アイテム」が含まれており、それぞれに「名前」、「レベル」などのプロパティがあります。プロパティの 1 つは、「defindex」と呼ばれる一意の整数識別子です。上記のプロパティのいくつかをフィールドとして使用して、これらの各アイテムの POJO を作成しています (defindex はその 1 つです)。

  • defindex を検索して、これらのアイテム オブジェクトを何度も読み取る必要があります。
  • オブジェクトのデータ フィールドは変更しませんが、

私の質問は、これらのアイテム オブジェクトをどのように保存すればよいですか?

私が最初に考えたのは、それらを配列に格納し、実際の配列インデックスとして defindex を使用することでしたが、配列は巨大になり、すべての defindex が使用されるわけではありません。たとえば、ある時点で 2k から 30k にジャンプします。

4

1 に答える 1

5

を使用しMapます。

Mapオブジェクトは、一意の「キー」と値の間の関係を格納します。

や などMapの実装。これらはジェネリックであり、キーと値の型パラメーターがあります。HashMapTreeMap

以下を使用できます。これは間違いなく疑似コードです。これらのオブジェクトを操作する方法に合わせて調整してください。SAX API は考慮していません。これは、 の使用方法を示しているだけMapです。

Map<Integer, Item> items = new HashMap<Integer, Item>();
for (Item itemToRead : file) { // or however you iterate
    items.put(item.getDefindex(), item);
}

// data retrieval
Item itemToRetrieve = items.get(defindexToGet);
于 2013-07-24T02:05:56.517 に答える