数据结构用于存储具有唯一索引的数千个对象

时间:2013-07-24 02:00:36

标签: java data-structures

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

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

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

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

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

1 个答案:

答案 0 :(得分: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);