基于一个变量对Object数组进行排序

时间:2014-02-28 17:30:58

标签: java arrays sorting object compare

大家好,我有一个名为GEN的类,我有一个这个我想要的数组是根据时间变量排序这个数组 所以时间最短的人必须是gend [0]。 我希望我能清楚地解释我的问题并使用NetBeans

 public class GEN
{
    int[][] mark=new int[TIMELIMIT][N+1];
    int[][] dimark=new int[TIMELIMIT][N+1];
    int time=0;
    int[] touched=new int[N+1];
}
public GEN[] gend=new GEN[GENNUM];

2 个答案:

答案 0 :(得分:0)

您需要实施Comparable

public class GEN implements Comparable<GEN>
{
    int[][] mark=new int[TIMELIMIT][N+1];
    int[][] dimark=new int[TIMELIMIT][N+1];
    int time=0;
    int[] touched=new int[N+1];

    int compareTo(GEN obj)
    {
        // compareTo returns a negative number if this is less than obj, 
        // a positive number if this is greater than obj, 
        // and 0 if they are equal.
        return this.time - obj.time;
    }
}

public GEN[] gend=new GEN[GENNUM];

通过实施Comparable,您可以使用Arrays.sort()对数组填充GEN个对象进行排序。 sort函数使用compareTo来确定对象的正确排序。因此,一旦您实现了Comparable,您只需要写:

Arrays.sort(gend);

答案 1 :(得分:0)

说真的,你应该查看Luke Willis在他的回答中发布的Java文档链接,看到大量的类(其中一大部分经常使用)是“已知的实现类”,这令人印象深刻。如果你查看那个列表,并考虑比较对于你熟悉的类有多强大(如果你熟悉自动装箱/拆箱那么你将会,如果没有,你可以点击那个位于Java doc。

你可以坐在那里尝试第一次弄清楚如何编写一个算法,根据每个对象内部的实例变量对例如ArrayList<SomeObjectType> arrList进行排序,例如Card对象的原始int faceValue。 ..

... 60多分钟后,由于您不熟悉如何创建排序算法,因此需要一段时间。此外,它将是一个有点混淆代码的大块。

...或者您可以阅读Comparable并实施它。

编辑:并不是说手工制作算法会是一件坏事,它绝对是一种很好的学习体验,但是Comparable是一种强大而简洁的工具,可以在你的代码中实现。