[英]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.