首页javalistJava Collection - 如何使用集合和比较器以升序对Arraylist进行排序

Java Collection - 如何使用集合和比较器以升序对Arraylist进行排序

我们想知道如何使用集合和比较器以升序对Arraylist进行排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Person {
  protected String fname;
  protected String lname;

  public Person() {

  }

  public Person(String fname, String lname) {
    this.fname = fname;
    this.lname = lname;
  }

  public boolean equals(Object objet) {
    if (objet instanceof Person) {
      Person p = (Person) objet;
      return p.getFname().equals(this.getFname())
          && p.getLname().equals(this.lname);
    } else
      return super.equals(objet);
  }

  @Override
  public String toString() {
    return "Person(fname : " + getFname() + ", lname : " + getLname() + ")";
  }

  public String getFname() {
    return fname;
  }

  public void setFname(String fname) {
    this.fname = fname;
  }

  public String getLname() {
    return lname;
  }

  public void setLname(String lname) {
    this.lname = lname;
  }

}

class ComparePerson implements Comparator<Person> {
  @Override
  public int compare(Person p1, Person p2) {
    if (p1.getFname().equalsIgnoreCase(p2.getFname())) {
      return p1.getLname().compareTo(p2.getLname());
    }
    return p1.getFname().compareTo(p2.getFname());
  }
}

class Group {
  protected List<Person> listPersons;

  public Group() {
    this.listPersons = new ArrayList<Person>();
  }

  public Group(List<Person> listPersons) {
    this.listPersons = listPersons;
  }

  public void order(boolean asc) {
    Comparator<Person> comp = asc ? new ComparePerson() : Collections
        .reverseOrder(new ComparePerson());
    Collections.sort(this.listPersons, comp);
  }

  public void display() {
    for (Person p : this.listPersons) {
      System.out.println(p);
    }
  }

  public List<Person> getListPersons() {
    return listPersons;
  }

  public void setListPersons(List<Person> listPersons) {
    this.listPersons = listPersons;
  }

}

public class Main {
  public static void main(String[] args) {
    Group g = new Group();
    List listPersons = new ArrayList<Person>();
    g.setListPersons(listPersons);

    listPersons.add(new Person("A", "B"));
    listPersons.add(new Person("C", "D"));
    listPersons.add(new Person("E", "F"));

    g.display();

    g.order(true);
    g.display();

    g.order(false);
    g.display();
  }
}