[英]Sorting list of objects
我有一個對象列表:
List<WorkflowError> workflowErrors = new List<WorkflowError>();
我想在其中按字母順序對字符串字段errorCode進行排序。
我知道我要用
Collections.sort(list,comparator)
並編寫一個自定義比較器:
public class SortByErrorComparator implements Comparator<WorkflowError>
{
// Comparator logic
return 0;
}
我已經看到了如何針對一維列表執行此操作的示例,但是我無法弄清楚如何開始創建對象列表。
任何幫助,將不勝感激。
您需要實現compare
方法。
public class SortByErrorComparator implements Comparator<WorkflowError> {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
}
然后,您可以簡單地執行以下操作:
Collections.sort(list, new SortByErrorComparator()) ;
在Java世界中,通常我們使用匿名內部類按以下方式內聯:
Collections.sort(list, new Comparator<WorkflowError>() {
public int compare(WorkflowError obj1, WorkflowError obj2) {
return obj1.getErrorCode().compareTo(obj2.getErrorCode());
}
});
在比較器中,您必須解釋如何對特定對象進行排序。
if (obj.att1 < obj2.att2)
...
你懂嗎?
對列表進行排序時,排序實現將使用您的比較器來比較各個對象的對象。 因此,您的比較器需要做的是針對給定的一對WorkFlowErrors(首先)進行決策。
從您所說的來看,這聽起來像只是從每個錯誤代碼獲取錯誤代碼並進行字符串比較。
如果您始終希望以這種方式比較WorkflowError對象,最簡單的方法是在WorkflowError
本身上實現Comparable<WorkflowError>
。
public int compareTo(WorkflowError that) {
return this.getErrorCode().compareTo(that.getErrorCode());
}
假設errorCode實現了Comparable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.