我需要在java中解析一个xml文件并将其存储在一个数组中以便稍后进行排序。 xml文件具有此格式
<Experiments>
<Experiment ID="312" RIndex="3" DIndex="3">40231</Experiment>
<Experiment ID="481" RIndex="2" DIndex="5">23801</Experiment>
<Experiment ID="102" RIndex="1" DIndex="5">41231</Experiment>
</Experiments>
对于每个实验,必须存储RIndex,DIndex和实验值。我认为最直接的方式是2D数组,但有一个函数我需要按其中一个属性(RIndex,DIndex或Experiment值)进行排序。我也想过使用集合的ArrayList。这是最好的方法吗?
答案 0 :(得分:1)
我肯定会在顶层使用ArrayList,并提供自定义Comparator
来根据您考虑的任何排序条件对值进行排序。有关比较器的使用,请参阅:
选择如何存储值将是您最重要的选择。最好的选择可能是:
Experiment
。这将是最有效的。HashMap
中,该字段将字段映射到值。这样效率会降低,但如果你有不同类型的不同属性的实验等,这可能是一种有用的方法。答案 1 :(得分:0)
创建一个包含3个值的简单类,然后为每个排序情况创建适当的Comparators,然后将它们填入ArrayList并使用正确的Comparator。
答案 2 :(得分:0)
您可以使用实例变量Experiment
,ID
,RIndex
和DIndex
创建一个类Value
,然后实现您可以对其进行排序的Comparator界面您Experiment
类的对象。(假设您知道如何使用Comparator)
答案 3 :(得分:0)
由于性能似乎很关键,我相信你会设置基准测试。他们会告诉你什么是最好的方式。
显而易见的方法是将数据放在SortedSet中,这样就不会有单独的排序步骤。应该比从文件中读取任何内容更快,所以我猜你应该没问题。那个。
您需要创建一个包含所有相关值以及可能的其他ID的简单类,以使每个值都唯一。
此类应实现Comparable界面,或者如果您需要使用不同的标准进行排序,则可以单独提供Comparators。