class PlayerComparatorByRating implements Comparator<Player> {
@Override
public int compare(Player o1, Player o2) {
return o1.getRating() - o2.getRating();
}
}
抱歉,这个"基本"问题,但我不明白比较函数的作用。我的意思是她比较一个对象的字段(在这种情况下),但是什么时候可以分类?当返回值为&lt时;0,= 0或> 0。
它不排序,比较。然后,您可以根据该比较对值进行排序。
您应该在播放器集合和自定义比较器上调用Collections.sort
,例如:
List<Player> players = new ArrayList<>();
players.add(...);
Collections.sort(players, new PlayerComparatorByRating();
您将按照上升顺序进行分类。
- 在您的代码中,
compare
函数:
- 返回a 负整数,如果第一个参数
o1
小于第二个参数o2
- 返回零,如果第一个参数
o1
等于第二个参数o2
- 返回a Postive Integer ,如果第一个参数
o1
大于第二个参数o2
- 要进行排序,您必须明确调用
Collections.sort()
方法。
- 如果您的列表包含字符串元素,则按字母顺序排序。
- 实现
Comparable
接口的类,提供自然排序。
更多帮助:https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html