1

我需要在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 和实验值。我认为最直接的方法是二维数组,但是有一个函数我需要按其中一个属性(RIndex、DIndex 或实验值)进行排序。我也想过使用 ArrayList 的集合。这是最好的方法吗?

4

4 回答 4

1

我肯定会在顶层使用 ArrayList,并提供一个自定义Comparator来根据您想到的任何排序标准对值进行排序。有关比较器的用法,请参阅:

选择如何存储值将是您最重要的选择。最佳选择可能是:

  • 定义一个Experiment包含您需要的字段的类。这将是最有效的。
  • 将每个实验结果存储在HashMap将字段映射到值的 a 中。这会降低效率,但如果您有不同类型的实验具有不同的属性等,这可能是一种有用的方法。
于 2012-10-14T06:23:01.520 回答
0

使用 3 个值创建一个简单的类,然后为每个排序情况创建适当的比较器,然后将它们填充到 ArrayList 并使用适当的比较器。

于 2012-10-14T06:08:29.473 回答
0

Experiment您可以使用实例变量创建一个类ID,然后实现 Comparator 接口RIndex,您可以通过该接口对类的对象进行排序。(假设您知道如何使用 Comparator)DIndexValueExperiment

于 2012-10-14T06:10:26.073 回答
0

由于性能似乎很关键,我相信你会设置基准。他们会告诉你什么是最好的方法。

执行此操作的明显方法是将数据放入SortedSet中,因此您没有单独的排序步骤。应该比从文件中读取任何内容要快得多,所以我想你应该没问题。接着就,随即。

您需要创建一个简单的类,其中包含所有相关值,可能还有一些额外的 id,以使每个值都唯一。

这个类应该实现Comparable接口,或者如果您需要使用不同的标准进行排序,您可以提供单独的Comparators

于 2012-10-14T06:10:30.770 回答