1

你能举一个“选择类内的自然排序”的例子吗?

我在 docs.oracle 中阅读了对象排序,但它没有说明在有多个元素的情况下如何确定自然排序。如果一个班级有姓名、年龄、地址、电话号码等元素;选择哪一个来进行自然排序?

然后,我在这里的一篇文章中读到可以决定自然排序。我是一名 Java 新手,试图解决家庭作业并首次尝试收集框架。

4

2 回答 2

2

是的,您说得对,可以决定自然顺序。您将实现 Comparable 并编写自己的 compareTo() 方法实现。在这种方法中,你决定什么胜过什么。

于 2012-07-19T02:36:36.553 回答
1

我更喜欢 Comparator 类,尽管实现看起来更重量级。原因是,对于某些对象,比较什么并不总是很清楚。使用.compareTo()(即实现 IComparable)并不像显式 Comparator 那样清晰。

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());
    }
});

这里我使用了一个匿名类,但如果你愿意,你可以让 Comparator 成为他们自己的(命名的)类。

于 2012-07-19T02:46:27.513 回答