所以我有一个分区文件,我读入一个数组。
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++;
}
}
这就是我想要排序的数组。我试着做一个选择排序但是因为我想要按两个属性排序而不是一个属性而混淆。
答案 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 sort
或binary 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]);
,然后继续。