2014-01-17 70 views
0

如何使用Collections.sort對具有以下屬性的對象列表進行排序?Collections.sort通過日期屬性列表中的對象

我想按日期對列表進行排序。

public Comment { 
    private Timestamp date; 
    private String description; 

} 

當然,也有getter和setter。

謝謝!

+0

你試圖完成什麼? – nachokk

+0

我沒有看到其他。抱歉。 –

回答

2

您有2個選項,你可以創建你的排序策略創建Comparator,或定義自然秩序類使用比較實施Comparable

public class Comment{ 

private Timestamp date; 
private String description; 
public static final Comparator<Comment> commentComparator = new MyComparator(); 

//getter and setter 

static class MyComparator implements Comparator<Comment>{ 

      @Override 
      public int compare(Comment o1, Comment o2) { 
       // here you do your business logic, when you say where a comment is greater than other 
      }  
} 

} 

並在客戶端代碼。

例子:

List<MyClass> list = new ArrayList<>(); 
//fill array with values 
Collections.sort(list, Comment.commentComparator); 

瞭解更多:Collections#sort(..)

如果你要定義類的自然排序只是定義

public class Comment implements Comparable<Comment>{ 

     @Override 
     public int compareTo(Comment o) { 
      // do business logic here 
     } 
} 

而在客戶端代碼:

Collections.sort(myList); // where myList is List<Comment> 
1

使用比較器,例如:

import java.sql.Timestamp; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

public class CommentComparator implements Comparator<Comment> { 

    @Override 
    public int compare(Comment o1, Comment o2) { 
     return o1.getDate().compareTo(o2.getDate()); 
    } 

    public static void main(String[] args) { 
     List<Comment> list = new ArrayList<Comment>(); 
     for (int i = 0; i < 10; i++) { 
      Timestamp t = new Timestamp(System.currentTimeMillis()); 
      Comment c = new Comment(); 
      c.setDate(t); 
      c.setDescription(String.valueOf(i)); 
      list.add(c); 
     } 

     Collections.sort(list, new CommentComparator()); 
    } 
} 
相關問題