How would I display this linked list in desending order by S

How would I display this linked list in desending order by Score? I need it when it when I display it in my GUI to sort by the highest score at the top, and then desending to the lowest score in the bottom? Also, I was wondering if there is a way to limit the entries to only 10. Any help would be appreciated! Thanks.

public class ScoreList {
private Player head; //reference to the head of the list
private Player tail; //reference to the tail of the list
int count;


public ScoreList() {
count = 0;
head = null;
tail = null;
}
  
public int getCount() {
return count;
}
  
public int size() {

int count = 0;
Player p = head;

while(p != null) {

count++;
p = p.next;
}

return count;
}
  
//method to add an item to the list - append to the tail of the list
public void add(String name, String score) {
// Create Player object
Player newPlayer = new Player(name, score);
if (head == null) {
head = newPlayer;
tail = head;
count++;
}
  
else {
//append to the end of the list
tail.setNext(newPlayer);
tail = newPlayer;
count++;
}
  
if(size() > 10) {

Player currentPlayer = head;

for (int i = 0; i < 9; i++) {
currentPlayer = currentPlayer.next;
}
currentPlayer.next = null;
}
}
  

// end add method

  
//method to let the user get the data from a node in the list
  
public String getItem(int index) {
String result = \"\";
String name = \"\";
String score = \"\";
Player curName;
  
if (count > 0 && index == 0) {
//return the Player info at the head of the list
name = head.getName();
score = head.getScore();
}
  
else if (index > 0 && index < count) {
curName = head;
for (int i = 1; i <= index; i++) {
curName = curName.getNext();
}
name = curName.getName();
score = curName.getScore();
}
  
result = \"Player: \" + name + \" Score: \" + score;
return result;
}


//nested inner class
public class Player {
private String player;
private String score;
private Player next;

public Player() {
player = \"\";
score = \"\";
next = null;
}

public Player(String artist, String title) {
this.player = artist;
this.score = title;
next = null;
}

public String getName() {
return player;
}

public String getScore() {
return score;
}

public Player getNext() {
return next;
}

public void setArtist(String player) {
this.player = player;
}

public void setTitle(String score) {
this.score = score;
}

public void setNext(Player next) {
this.next = next;
}
  
  
  
  



  
}
  
  
}

Solution

public void sort() {

    Player runner = head;

    Player[] arr = new Player[size()];

    int i = 0;

    while (runner != null) {

        arr[i++] = runner;

        runner = runner.next;

    }

       Arrays.sort(arr, new Comparator<Player>() {

       public int compare(Player o1, Player o2) {

            if (Integer.parseInt(o1.getScore()) > Integer.parseInt(o2.getScore())) {

                return -1;

            } else if (Integer.parseInt(o1.getScore()) < Integer.parseInt(o2.getScore())) {

                return 1;

          } else {

                return 0;

            }

        }

    });

    for (int j = 0; j < arr.length - 1; j++) {

        arr[j].setNext(arr[j + 1]);

    }

    if (arr.length > 0) {

        arr[arr.length - 1].setNext(null);

        head = arr[0];

        tail = arr[arr.length - 1];

    }

}

How would I display this linked list in desending order by Score? I need it when it when I display it in my GUI to sort by the highest score at the top, and the
How would I display this linked list in desending order by Score? I need it when it when I display it in my GUI to sort by the highest score at the top, and the
How would I display this linked list in desending order by Score? I need it when it when I display it in my GUI to sort by the highest score at the top, and the
How would I display this linked list in desending order by Score? I need it when it when I display it in my GUI to sort by the highest score at the top, and the

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site