簡體   English   中英

如何按降序對數組進行排序?對數組進行排序有哪些不同的選擇?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM