我想按另一个对象 (DefectClass) 中包含的值对对象列表(备注)进行排序。
public class Remark {
private int remarkId;
private DefectClass defectClass;
}
我有一个备注列表,我正在使用此代码按缺陷类的标题对它们进行排序:
Collections.sort(remarks, new Comparator<Remark>()
{
@Override
public int compare(Remark arg0, Remark arg1) {
return arg0.getDefectClass().compareTo(arg1.getDefectClass());
}
});
这是我的 DefectClass 模型中的比较方法:
public class DefectClass implements Comparable<DefectClass> {
private String DefectClassTitle;
/* Getters And Setters */
@Override
public int compareTo(DefectClass o) {
if(o.getDefectClassTitle().equals(this.getDefectClassTitle()))
return 0;
else
return 1;
}
通过这些代码,我想按这些备注的缺陷类标题对备注列表进行排序...但最后我总是得到相同的列表,但没有排序。我做错了什么?
最佳答案
DefectClass.compareTo()
方法的实现不正确,因为它应该比较 2 个对象并返回第一个对象是否更低 (-1)、等于(0) 或更大 ( 1)到第二个(不仅表明它们是否与您的情况相同)。假设 getDefectClassTitle()
返回 String
我会将该方法实现为:
public int compareTo(DefectClass o) {
return o.getDefectClassTitle().compareTo(this.getDefectClassTitle());
}
关于java - 按特定值对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23983301/