如何使用Collections.sort對具有以下屬性的對象列表進行排序?Collections.sort通過日期屬性列表中的對象
我想按日期對列表進行排序。
public Comment {
private Timestamp date;
private String description;
}
當然,也有getter和setter。
謝謝!
如何使用Collections.sort對具有以下屬性的對象列表進行排序?Collections.sort通過日期屬性列表中的對象
我想按日期對列表進行排序。
public Comment {
private Timestamp date;
private String description;
}
當然,也有getter和setter。
謝謝!
您有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>
使用比較器,例如:
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());
}
}
你試圖完成什麼? – nachokk
我沒有看到其他。抱歉。 –