我有一个名为 Player 的类,有胜利和失败。
public class Player
{
private String name ;
private int ranking=0;
private int wins = 0 ;
private int lossess = 0 ;
private boolean isPrivate =false;
private int experiance =0;
public float getWinRatio()
{
if( getExperiance() <= 0 ) return -0.0f ;
return (getWins()/(float)getExperiance()) ;
}
我有一个包含 10000 个 Player 对象的 TreeSet。我如何将它们相互比较,然后根据胜率函数对它们进行排序?
最佳答案
您需要在类中正确声明方法才能编译。但是一旦您这样做了,您就可以像这样将 Comparator
传递给 TreeSet
。
Set<Player> players = new TreeSet<>(Comparator.comparing(Player::getWinRatio));
这里我只是将值添加到 TreeSet 中。
int[] numbs = { 5, 3, 1, 4, 2, 9, 7, 6, 8
};
// Integer has a natural ordering in ascending order so no
// Comparator was needed
Set<Integer> set = new TreeSet<>();
for (int n : numbs) {
set.add(n);
}
瞧!它们已排序。
System.out.println(set);
如果想以相反的顺序对它们进行排序,可以这样分配TreeSet。
Set<Integer> set = new TreeSet<>(Comparator.reverseOrder());
对于你的胜利比例排序,你可以像这样颠倒顺序。
Set<Player> players =
new TreeSet<>(Comparator.comparing(Player::getWinRatio).reversed());
关于java - 如何对 TreeSet 中的项目进行比较和排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236369/