您能否举一个“选择班级内部自然顺序”的示例。

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

然后,我在这里阅读了一篇文章,可以确定自然顺序。我是一名Java新手,试图解决一项家庭作业,并尝试了我的收藏框架。

最佳答案

我更喜欢使用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());
    }
});


在这里,我使用一个匿名类,但是如果愿意,您可以将比较器设为自己的(命名的)类。

关于java - 需要说明Java中的自然顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11553118/

10-10 08:16