你会举一个例子“选择课堂内的自然顺序。”
我在docs.oracle中读过Object Ordering但是没有说明在有多个元素的情况下如何决定自然排序。如果一个班级有姓名,年龄,地址,电话号码等元素;被选中哪一个做自然排序?
然后,我在这里读到一篇文章,可以决定自然顺序。我是一个Java新手,试图解决家庭作业并首次尝试收集框架。
答案 0 :(得分:2)
是的,你是对的,可以决定自然顺序。您将实现Comparable并编写自己的compareTo()方法实现。在那种方法中,你决定胜过什么。
答案 1 :(得分:1)
我更喜欢Comparator类,即使实现看起来有点重量级。原因在于,对于某些对象,并不总是清楚被比较的是什么。使用.compareTo()
(即实现IComparable)并不像显式比较器那样清晰。
BasketballPlayer player1 = new BasketballPlayer("Smith", 2.02);
BasketballPlayer player2 = new BasketballPlayer("Jones", 1.95);
List<BasketballPlayer> playersByHeight = new ArrayList<BasketballPlayer>();
List<BasketballPlayer> playersByName = new ArrayList<BasketballPlayer>();
playersByHeight.add(player1);
playersByHeight.add(player2);
playersByName.add(player1);
playersByName.add(player2);
Collections.sort(playersByName, new Comparator<BasketballPlayer>() {
@Override
public int compare(BasketballPlayer o1, BasketballPlayer o2) {
return o1.getName().compareTo(o2.getName());
}
});
Collections.sort(playersByHeight, new Comparator<BasketballPlayer>() {
@Override
public int compare(BasketballPlayer o1, BasketballPlayer o2) {
return o1.getHeight().compareTo(o2.getHeight());
}
});
这里我使用匿名类,但如果你愿意,你可以让比较器成为他们自己的(命名)类。