我创建了一个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/