java - 如何对 TreeSet 中的项目进行比较和排序?

标签 java sorting

我有一个名为 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/

相关文章:

java - 从 Flux 消费时按顺序调用非阻塞操作,包括重试

java - 如何在java中键盘输入后更改图像?

sorting - Elasticsearch zScore 计算(合并 2 个具有不同分数分布的文档集合)

Java基于textField对arrayList进行排序

python-3.x - 根据列名中的匹配字符串对 pandas 单元格(字符串)进行排序

python - 如何改进我的代码以处理大量数据?

php - 按子键日期对多维数组进行排序?

java - 如何在 Java 中使用值和键对 HashMap 表进行排序

Java Swing 和 JGoodies

Java native 接口(interface)和 Windows 窗体