按两个双精度对对象数组进行排序

时间:2016-04-22 01:00:09

标签: java arrays sorting double

所以我有一个分区文件,我读入一个数组。

array [0]是boxID(double)

array [1]是movieID(double)

我不知道如何通过这两个双打对数组进行排序。任何意见?我试过在这个网站上查看其他问题,但我对它们感到困惑。我目前正在参加我的第一个编程课程。

Movies[] newMasterMovies = new Movies[200];

    int newMasterCount = 0;
    int masterCount = 0;
    int updateCount = 0;

    while (updateCount < updateTotalCounter || masterCount < masterTotalCounter) {

        String updateCompare = updateMovies[updateCount].getBoxID() + updateMovies[updateCount].getMovieID();
        String masterCompare = masterMovies[masterCount].getBoxID() + masterMovies[masterCount].getMovieID();
        int compare = updateCompare.compareTo(masterCompare);

        if (compare > 0) {
            newMasterMovies[newMasterCount] = masterMovies[masterCount];
            masterCount++;
            newMasterCount++;
        }

        if (updateMovies[updateCount].getActionCode() == "A") {
            newMasterMovies[newMasterCount] = updateMovies[updateCount];
            updateCount++;
            newMasterCount++;
        }

        if (updateMovies[updateCount].getActionCode() == "D") {
            updateCount++;
            masterCount++;
        }

        if (updateMovies[updateCount].getActionCode() == "C") {
            newMasterMovies[newMasterCount] = updateMovies[updateCount];
            updateCount++;
            newMasterCount++;
            masterCount++;
        }

    }

这就是我想要排序的数组。我试着做一个选择排序但是因为我想要按两个属性排序而不是一个属性而混淆。

2 个答案:

答案 0 :(得分:1)

这家伙有一个奇迹

  Arrays.sort(iArr);

这是它可以做的: 这是一个示例代码

 public class ArrayDemo {

 public static void main(String[] args) {

     // initializing unsorted int array
     int iArr[] = {2, 1, 9, 6, 4};

     // let us print all the elements available in list
     for (int number : iArr) {
     System.out.println("Number = " + number);
     }

     // sorting array
     Arrays.sort(iArr);

     // let us print all the elements available in list
     System.out.println("The sorted int array is:");
     for (int number : iArr) {
     System.out.println("Number = " + number);
    }
  }
}

结果应该是这样的

数字= 2

数字= 1

数字= 9

数字= 6

数字= 4

有序的int数组是:

数字= 1

数字= 2

数字= 4

数字= 6

数字= 9

希望这有助于一些

答案 1 :(得分:0)

要简单地对Movies[]进行排序,您可以使用Arrays.sort并使用自定义Comparator。像这样:

    Arrays.sort(masterMovies, new Comparator<Movies>() {
        @Override
        public int compare(Movies o1, Movies o2) {
            // compare boxID
            // compare movieID
            return 0; // return result
        }
    });

Arrays.sort使用merge sortbinary insertion sort,它们比selection sort更稳定,更快。

如果您坚持进行选择排序,请尝试编辑yor class Movies以实现Comparable界面,如下所示:class Movies implements Comparable<Movies>。并实现compareTo这样的方法:

    @Override
    public int compareTo(Movies o) {
        // compare boxID
        // compare movieID
        return 0; // return result
    }

将旧的比较代码int compare = updateCompare.compareTo(masterCompare);更改为int compare=updateMovies[updateCount].compareTo(masterMovies[masterCount]);,然后继续。