package com.e2u.sort; import java.util.Comparator; public class PlayerComparator implements Comparator<Player> { private boolean littleEndian = true; public PlayerComparator(int round) { littleEndian = MatchUtil.littleEndian(round); } public int compare(Player p1, Player p2) { return compareHelper(p2, p1); } //p1 has better score than p2, return > 0 private int compareHelper(Player p1, Player p2) { int ret = 0; ret = p1.score - p2.score; if(ret != 0) { return ret; } ret = p1.minorScore - p2.minorScore; if(ret != 0) { return ret; } ret = p1.winRoundCount - p2.winRoundCount; if(ret != 0) { return ret; } //Notice the orders from now ret = p2.foul - p1.foul; if(ret != 0) { return ret; } ret = p2.firstWinRound - p1.firstWinRound; if(ret != 0) { return ret; } ret = p1.id - p2.id; if(littleEndian) { ret *= -1; } return ret; } }