需要解释Java中的自然顺序吗

需要解释Java中的自然顺序吗,java,sorting,collections,Java,Sorting,Collections,你能举一个“选择类内的自然顺序”的例子吗 我阅读了docs.oracle中的对象排序,但它没有说明在存在多个元素的情况下如何确定自然排序。如果一个类包含诸如姓名、年龄、地址、电话号码等元素;选择哪一个来进行自然排序 然后,我在这里的一篇文章中读到,人们可以决定自然顺序。我是一名Java新手,正在努力完成家庭作业,并尝试尝试集合框架。是的,你说得对,可以决定自然顺序。您将实现Comparable并编写自己的compareTo()方法实现。在这种方法中,您可以决定什么优于什么。我更喜欢Compara

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

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


然后,我在这里的一篇文章中读到,人们可以决定自然顺序。我是一名Java新手,正在努力完成家庭作业,并尝试尝试集合框架。

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

我更喜欢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());
    }
});
篮球运动员1=新篮球运动员(“史密斯”,2.02);
篮球运动员2=新篮球运动员(“琼斯”,1.95);
List PLAYERSBYHEIGH=新建ArrayList();
List playersByName=new ArrayList();
playersByHeight.add(player1);
playersByHeight.add(player2);
playersByName.add(player1);
playersByName.add(player2);
Collections.sort(playersByName,newcomparator(){
@凌驾
公共整数比较(篮球运动员o1,篮球运动员o2){
返回o1.getName().compareTo(o2.getName());
}
});
Collections.sort(playersByHeight,newcomparator(){
@凌驾
公共整数比较(篮球运动员o1,篮球运动员o2){
返回o1.getHeight().compareTo(o2.getHeight());
}
});

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

或者编写自己的
比较器来定义顺序,或者让类实现
Comparable
接口,并在
compareTo
方法中提供实现。谢谢。我正试图这样做,我的意思是写一个比较。非常感谢。我只是需要更多的经验来编写比较器。你会明白的。。。通常,基础属性是可比较的,因此您可以只使用它的.compareTo()方法来执行脏工作。你可以在返回值前加一个减号来颠倒顺序。