3

我正在使用 Java SAX 解析器读取一个巨大的 xml 文件: http ://api.steampowered.com/IEconItems_440/GetSchema/v0001/?format=xml (2.82 MB)

该文件包含数千个“项目”,每个项目都具有“名称”、“级别”等属性。其中一个属性是称为“defindex”的唯一整数标识符。我正在为这些项目中的每一个创建 POJO,并将上面提到的一些属性作为字段(defindex 就是其中之一)。

  • 我需要通过搜索 defindex 来大量阅读这些项目对象
  • 我不会更改对象的数据字段

我的问题是:我应该如何存储这些项目对象?

我的第一个想法是将它们存储在一个数组中,并使用 defindex 作为实际的数组索引,但数组会很大,并且并非所有的 defindexes 都被使用,例如它一次从 2k 跳到 30k。

4

1 回答 1

5

使用Map.

Map对象存储唯一“键”和值之间的关系。

MapareHashMapTreeMap等的实现。它们是通用的,具有键和值的类型参数。

您可以使用以下内容。这绝对是伪代码;调整它以适应您将要操作这些对象的方式。我没有考虑 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 回答