Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java—存储多个相关值以进行排序的最有效方法?_Java_Sorting_Data Structures - Fatal编程技术网

java—存储多个相关值以进行排序的最有效方法?

java—存储多个相关值以进行排序的最有效方法?,java,sorting,data-structures,Java,Sorting,Data Structures,我需要用java解析一个xml文件,并将其存储在一个数组中,以便以后进行排序。xml文件具有这种格式 <Experiments> <Experiment ID="312" RIndex="3" DIndex="3">40231</Experiment> <Experiment ID="481" RIndex="2" DIndex="5">23801</Experiment> <Experiment ID="

我需要用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>

40231
23801
41231

对于每个实验,必须存储RIndex、DIndex和实验值。我认为最直接的方法是2D数组,但有一个函数,我需要根据其中一个属性(RIndex、DIndex或实验值)进行排序。我也想过使用集合的ArrayList。这是最好的方法吗?

创建一个包含3个值的简单类,然后为每个排序案例创建适当的比较器,然后将它们填入ArrayList并使用适当的比较器。

创建一个包含3个值的简单类,然后为每个排序案例创建适当的比较器,然后将它们填入ArrayList并使用适当的比较器。

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

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

因为性能似乎至关重要,我相信您会设置基准测试。它们会告诉您什么是最好的方法

最明显的方法是将数据放在一个文件夹中,这样就没有单独的排序步骤。应该比从文件中读取任何内容快得多,所以我想你应该没问题。这样做

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


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

因为性能似乎很关键,我相信您会设置基准。它们会告诉您什么是最好的方法

最明显的方法是将数据放在一个文件夹中,这样就没有单独的排序步骤。应该比从文件中读取任何内容快得多,所以我想你应该没问题。这样做

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


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

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

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

  • 定义一个类
    Experiment
    ,其中包含您需要的字段。这将是最有效的
  • 将每个实验结果存储在一个将字段映射到值的
    HashMap
    中。这种方法效率较低,但如果您有不同属性的不同类型的实验,则可能是一种有用的方法

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

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

  • 定义一个类
    Experiment
    ,其中包含您需要的字段。这将是最有效的
  • 将每个实验结果存储在一个将字段映射到值的
    HashMap
    中。这种方法效率较低,但如果您有不同属性的不同类型的实验,则可能是一种有用的方法

谢谢。我不确定的是比较器部分,但你提供的链接澄清了它。我不确定的是比较器部分,但你提供的链接澄清了它