【问题标题】:Function Compare. When will it sort功能比较。什么时候排序
【发布时间】:2016-12-10 21:15:18
【问题描述】:
class PlayerComparatorByRating implements Comparator<Player> {

    @Override
    public int compare(Player o1, Player o2) {
       return o1.getRating() - o2.getRating();
    }
}

很抱歉这个“基本”问题,但我不明白比较函数的作用。我的意思是她比较了一个对象的字段(在这种情况下),但它什么时候排序?当返回值为0。

【问题讨论】:

标签: java collections interface compare


【解决方案1】:

它不排序,它比较。然后,您可以根据该比较对值进行排序。
您应该在您的玩家集合和自定义比较器上调用 Collections.sort,如下所示:

List<Player> players = new ArrayList<>();
players.add(...);
Collections.sort(players, new PlayerComparatorByRating();

您将按升序排列玩家。

【讨论】:

  • "然后您可以根据该比较对值进行排序。"按什么顺序?如何排序。是升序吗?
【解决方案2】:
  1. 在您的代码中,compare 函数:
  • 如果第一个参数o1 小于第二个参数o2,则返回一个负整数
  • 如果第一个参数o1 等于第二个参数o2,则返回
  • 如果第一个参数o1 大于第二个参数o2,则返回一个正整数
  1. 对于排序,您必须显式调用Collections.sort() 方法。
  • 如果您的列表包含字符串元素,则按字母顺序排序。
  • 实现Comparable 接口的类,提供自然排序


更多帮助:https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多