可以使用自定义比较器调用Collections.sort。并且该比较器可以实现为允许以不同的排序顺序进行排序。这是一个示例(针对你的Person模型-使用年龄作为整数):
public class FlexiblePersonComparator implements Comparator<Person> { public enum Order {Name, Age, Country} private Order sortingBy = Name; @Override public int compare(Person person1, Person person2) { switch(sortingBy) { case Name: return person1.name.compareTo(person2.name); case Age: return person1.age.compareTo(person2.age); case Country: return person1.country.compareTo(person2.country); } throw new RuntimeException("Practically unreachable pre, can't be thrown"); } public void setSortingBy(Order sortBy) { this.sortingBy = sortingBy; }}你可以这样使用它(假设人员是一个字段):
public void sortPersonsBy(FlexiblePersonComparator.Order sortingBy) { List<Person> persons = this.persons; // useless line, just for clarification FlexiblePersonComparator comparator = new FlexiblePersonComparator(); comparator.setSortingBy(sortingBy); Collections.sort(persons, comparator); // now we have a sorted list}


