0

我有一个对象联系

public class Contact(){
   private Integer idContact
   private Date dateDebut;
    private Date dateFin;
    ...............
   public Contact(){}
  // getters and setters
}

和联系人我想使用或其他方法List<Contact>找到具有最小 dateDebut 的对象和具有最大 dateFin 的对象。Collections.sort(contacts)

4

4 回答 4

5

创建一个内联匿名Comparator类并将其分配给一个常量:

public static final Comparator<Contact> DATE_DEBUT_COMPARATOR = new Comparator<Contact>() {
    public int compare(Contact c1, Contact c2) {
        return c1.dateDebut.compareTo(c2.dateDebut);
    }
}
于 2013-09-19T10:53:36.410 回答
0

您可以使用java.util.Collections.sort(List<T>, Comparator<? super T>)

于 2013-09-19T10:50:56.910 回答
0
static Comparator<Contact> DATEDEBUT_COMPARATOR = new Comparator<Contact>() {
    @Override
    public int compare(Contact first, Contact second) {
       assert(first != null);
       assert(second != null);
       return first.getDateDebut().compareTo(second.getDateDebut());
    }   
}

static Comparator<Contact> DATEFIN_COMPARATOR = new Comparator<Contact>() {
    @Override
    public int compare(Contact first, Contact second) {
       assert(first != null);
       assert(second != null);
       return first.getDateFin().compareTo(second.getDateFin());
    }   
}
于 2013-09-19T11:00:23.037 回答
0
static Comparator<Contact> DATE_DEBUT_COMPARATOR = new Comparator<Contact>() {
        @Override
        public int compare(Contact first, Contact second) {
           return first.getDateDebut().compareTo(second.getDateDebut());
        }  
        // Ascending order of debut date
    };


static Comparator<Contact> DATEFIN_COMPARATOR = new Comparator<Contact>() {
    @Override
    public int compare(Contact first, Contact second) {
      return second.getDateFin().compareTo(first.getDateFin());
    }   
    // Descending order of fin date
};

将比较器传递给 Collections Util,可以在 Arraylist 的第一个位置找到具有最短首次亮相日期的对象

Collections.sort(contactList, DATE_DEBUT_COMPARATOR);

同样将比较器传递给 Collections Util,可以在 Arraylist 的第一个位置找到具有最大 fin 日期的对象

Collections.sort(contactList, DATE_FIN_COMPARATOR);
于 2013-09-19T11:47:13.940 回答