[英]how to sort array in descending order and What are the different options to sort the array?
我已經嘗試這樣做了一段時間,但我做不到。
如何將默認的升序更改為降序? 另外,還有其他簡便的方法可以對數組進行排序嗎?
HighScore[] highscorelist = new HighScore[10]; // An array of 10
void setup() {
size(800, 600);
// score.txt is:
//10 -
//0 -
//0 -
//3 b
String rows[] = loadStrings("scores.txt");
for (int i = 0; i < highscorelist.length; i ++ ) { // Initialize
String[] pieces = split(rows[i], TAB);
highscorelist[i] = new HighScore(parseInt(pieces[0]), pieces[1]);
}
Arrays.sort(highscorelist, new SortHighScore());
}
void draw() {
fill(0);
textSize(18);
text("High Scores", 360, 234);
text("Name", 300, 260);
text("Score", 460, 260);
int x = 320;
int y = 290;
//Arrays.sort(highscorelist, new SortHighScore("score"));
for (int i =0; i < 10; i++) {
highscorelist[i].display(x, y, 150);
y+=20;
}
}
class HighScore {
int score;
String name;
HighScore() {
}
HighScore(int tempscore, String tempname) {
score = tempscore;
name = tempname;
}
void display(int x, int y, int gapX) {
text(score, x+gapX, y);
text(name, x, y);
}
}
class SortHighScore extends HighScore implements Comparator {
SortHighScore() {
}
/*
method which tells how to order the two elements in the array.
it is invoked automatically when we call "Arrays.sort", and must be included in this class.
*/
int compare(Object object1, Object object2) {
// cast the objects to your specific object class to be sorted by
HighScore row1 = (HighScore) object1;
HighScore row2 = (HighScore) object2;
// necessary to cast to Integer type when comparing ints
Integer val1 = (Integer) row1.score;
Integer val2 = (Integer) row2.score;
// the "compareTo" method is part of the Comparable interface, and provides a means of fully ordering objects.
return val1.compareTo(val2);
}
}
Arrays.sort(array,Collections.reverseOrder());
由於您已經編寫了比較器,因此請更改此行
return val1.compareTo(val2);
至
return val2.compareTo(val1);
得到降序排列。
使用Arrays類進行排序。 具有inbuit排序功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.