在Java中对集合中的对象进行排序?

在Java中对集合中的对象进行排序?,java,sorting,treeset,Java,Sorting,Treeset,我知道我们可以使用树集按自然顺序对字符串和数字进行排序。如果有一组对象呢 例如: I have a Person class { private String firstName; private String lastName; private int age; } 设置人员=新树集 在初始化person时,我希望person按名字排序 Comparable和Comparator都适用于您,但我建议使用Comparator,因为它不需要您修改Person类,您

我知道我们可以使用树集按自然顺序对字符串和数字进行排序。如果有一组对象呢

例如:

I have a Person class
{
     private String firstName;
     private String lastName;
     private int age;

}
设置人员=新树集

在初始化person时,我希望person按名字排序

Comparable和Comparator都适用于您,但我建议使用Comparator,因为它不需要您修改Person类,您只需要基于排序属性编写实现类,因此Comparator更灵活:

import java.util.Comparator;
public class FirstNameComparator implements Comparator<Person> {

    @Override
    public int compare(Person o1, Person o2) {
        String name1 = o1.getFirstName();
        String name2 = o2.getFirstName();
        return name1.compareTo(name2);
    }

}

//instantiate TreeSet instance with FirstNameComparator
Set<Person> ts = new TreeSet<>(new FirstNameComparator());

看看Comparable和Oracle的。我认为这篇文章可以帮助您查看类似问题的“我的答案”。Collections.sort包含一个列表,这样就无法使用集合。但是,由于OP使用的是TreeSet,所以这里有一个接受比较器的函数。我建议使用比较器,因为它不需要修改Person类。修改应该具有自然顺序的类没有错。一个更有力的论点是,像Person这样的类可能没有一个单一的自然顺序。@Mick助记符谢谢Mick。“是我的错,我认为这花了太多时间。”希莫塞尔谢谢你的评论,你是对的。我想的是我们可能无法控制这个班上的人。