我需要帮助定义使用什么方法。我有一个 SOAP 响应,给我一个 xml 文件。我需要在屏幕上显示 3 个相关列表。当您在第一个列表中选择一个项目时,相应的选择将出现在第二个列表中,依此类推。我只对从 xml 流中提取数据后如何有效地组织数据感兴趣。这是一个 xml 片段:
<device>
<manufacturer>Acer</manufacturer>
<model>A1</model>
<platform>Android</platform>
</device>
<device>
<manufacturer>Acer</manufacturer>
<model>A1</model>
<platform>J2ME</platform>
</device>
<device>
<manufacturer>Acer</manufacturer>
<model>A2</model>
<platform>Android</platform>
</device>
<device>
<manufacturer>Samsung</manufacturer>
<model>E400</model>
<platform>Android</platform>
</device>
所以,我会有像制造商={“宏碁”,“宏碁”,“宏碁”,“三星”},型号= {“A1”,“A1”,“A2”,“E400”},平台= { “Android”、“J2ME”、“Android”、“Android”}。
有趣的部分来了:我需要处理数据,以便我可以用它来显示 3 个列表。选择Android后,Acer和Samsung就可用了。如果选择Acer,则有A1和A2型号可供选择。所有列表都需要排序。目前,我正在使用 Sax 将数据解析为对象向量,其中包含制造商、型号、平台字段。我能想到的就是类似 TreeMap 的结构。任何建议,将不胜感激。
我认为层次结构不是您所需要的。因为用户可能会选择第一个平台或制造商。如果他选择第一个 Android,您要显示 3 台设备。如果他选择第一个 Acer,他将看到 2 台设备。
所以,我的建议如下。
- 创建具有制造商、型号、平台属性的设备类。
- 创建一个包含所有这些设备的普通链接列表。
创建 2 个映射:manufaturerIndex 和 plaformIndex,如下所示:
Map<String, Collection<Device>> manufacturerIndex;
遍历列表一次并填充所有索引映射。
像这样:
for(Device d : devices) {
Collection<Device> selected = manufacturerIndex.get(d.getManufacturer());
if (selected == null) {
selected = new ArrayList<Device>();
manufactuerIndex.put(d.getManufacturer(), selected);
}
selected.add(d);
// the same for the second index
}
现在您可以使用该数据结构了。
manufactuerIndex.get("Nokia")
-> 返回所有诺基亚设备。
注意这个数据结构是可扩展的。您始终可以根据需要添加任意数量的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)