Java 我可以在树集的构造函数中同时使用ArrayList和Comparator吗?

Java 我可以在树集的构造函数中同时使用ArrayList和Comparator吗?,java,comparator,treeset,Java,Comparator,Treeset,假设我在ArrayList中有一个属性为name(String)和age(int)的类Pet,我想在不使用Collections框架的情况下对它们进行排序,所以我使用树集来解析ArrayList。我的问题是,有没有办法在树集的构造函数中(与ArrayList一起)初始化一个新的比较器或者我必须在Pet类中实现一个新的比较器/比较器吗 已经通过在Pet类中实现一个可比较的方法尝试过了,并且成功了,但是我想知道是否有一种使用TreeSet构造函数的更短的方法 ArrayList<Pet>

假设我在ArrayList中有一个属性为name(String)和age(int)的类Pet,我想在不使用Collections框架的情况下对它们进行排序,所以我使用树集来解析ArrayList。我的问题是,有没有办法在树集的构造函数中(与ArrayList一起)初始化一个新的比较器或者我必须在Pet类中实现一个新的比较器/比较器吗

已经通过在Pet类中实现一个可比较的方法尝试过了,并且成功了,但是我想知道是否有一种使用TreeSet构造函数的更短的方法

ArrayList<Pet> myPets = new ArrayList<>();

// TreeSet to compare names
TreeSet<Pet> sortedPets = new TreeSet(myPets, new Comparator<Pet>() {                                         
    public int compare(Pet p1, Pet p2) {
        return p1.getName().compareTo(p2.getName());
    }
});
ArrayList myPets=new ArrayList();
//用于比较名称的树集
TreeSet sortedPets=新的TreeSet(myPets,新的比较器(){
公共整数比较(宠物p1、宠物p2){
返回p1.getName().compareTo(p2.getName());
}
});

没有同时使用
比较器和
集合的
树集
构造函数,但是您可以使用
比较器
创建一个
树集
,然后用
添加所有
填充它:

TreeSet<Pet> sortedPets = new TreeSet(new Comparator<Pet>() {                                         
    public int compare(Pet p1, Pet p2) {
        return p1.getName().compareTo(p2.getName());
    }
});
sortedPets.addAll(myPets);
TreeSet sortedPets=new TreeSet(new Comparator(){
公共整数比较(宠物p1、宠物p2){
返回p1.getName().compareTo(p2.getName());
}
});
sortedPets.addAll(我的宠物);

在<代码> PET类中实现代码< >可比只有在考虑“代码> PET < /代码> s的名称时才有意义,这是<>代码> PET<代码> S.

的自然排序。