我正在使用Java SAX解析器读取一个巨大的xml文件: http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?format=xml (2.82 MB)
此文件包含数千个“项目”,每个项目都具有“名称”,“级别”等属性。其中一个属性是名为“defindex”的唯一整数标识符。我正在为每个项目创建POJO,上面提到的一些属性为字段(defindex就是其中之一)。
我的问题是:我应该如何存储这些项目对象?
我的第一个想法是将它们存储在一个数组中并使用defindex作为实际的数组索引,但是数组将是巨大的并且并非所有的defindex都被使用,例如它一度从2k跳到30k。
答案 0 :(得分:5)
使用Map
。
Map
个对象存储唯一“键”和值之间的关系。
Map
的实现包括HashMap
和TreeMap
等。它们是通用的,带有键和值的类型参数。
您可以使用以下内容。这是绝对的伪代码;适应它然而你将要操纵这些对象。我没有考虑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);