我创建了一个Animal类:

public class Animal{
     private String name;
     private String color;
     etc...
}


然后,我有了一个动物数组:

ArrayList<Animal> animals = new ArrayList<Animal>();


我想按动物名称的字母顺序对这些动物列表进行排序。我的动物类中是否需要重写一种方法?这是如何运作的?

最佳答案

无需更改Animal类中的任何内容。只需使用Comparator(假设您有一个返回名称的getName方法):

animals.sort(Comparator.comparing(Animal::getName));


您还可以指定提取值进行比较后使用的比较器,方法是:

animals.sort(Comparator.comparing(Animal::getName, String.CASE_INSENSITIVE_ORDER));


如果您使用Java版本Collections.sort和一个匿名类作为Comparator(或使用任何其他方式来获取Comparator的实例,以适当地比较Animal):

Collections.sort(animals, new Comparator<Animal>() {

    @Override
    public int compare(Animal a1, Animal a2) {
        return a1.getName().compareTo(a2.getName()); // or different code comparing the Animals
    }

});

关于java - 我想按名称对动物对象进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35514017/

10-10 14:26