Java 按特定值对对象列表进行排序
我想根据另一个对象(DefectClass)中包含的值对对象(备注)列表进行排序 我有一个评论列表,我使用这个代码按照defectClass的标题对它们进行排序:Java 按特定值对对象列表进行排序,java,list,sorting,comparable,Java,List,Sorting,Comparable,我想根据另一个对象(DefectClass)中包含的值对对象(备注)列表进行排序 我有一个评论列表,我使用这个代码按照defectClass的标题对它们进行排序: Collections.sort(remarks, new Comparator<Remark>() { @Override public int compare(Remark arg0, Remark arg1) {
Collections.sort(remarks, new Comparator<Remark>()
{
@Override
public int compare(Remark arg0, Remark arg1) {
return arg0.getDefectClass().compareTo(arg1.getDefectClass());
}
});
Collections.sort(备注,新的比较器()
{
@凌驾
公共整数比较(备注arg0,备注arg1){
返回arg0.getDefectClass().compareTo(arg1.getDefectClass());
}
});
这是我的DefectClass模型中与methode的比较:
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;
}
public类DefectClass实现了可比较的{
私有字符串名称;
/*接球手和接球手*/
@凌驾
公共int比较(缺陷等级o){
如果(o.getDefectClassTitle().equals(this.getDefectClassTitle()))
返回0;
其他的
返回1;
}
根据这些代码,我想按照这些评论的DefectClass的标题对评论列表进行排序……但最后我总是得到相同的列表,没有排序。我做错了什么?DefectClass.compareTo()的实现方法不正确,因为它应该比较这两个对象,并返回第一个对象是否比第二个对象低(-1)、相等(0)或更大(1)(并且不仅指示它们是否与您的情况相同)。假设
getDefectClassTitle()
返回String
我将实现该方法:
public int compareTo(DefectClass o) {
return o.getDefectClassTitle().compareTo(this.getDefectClassTitle());
}
DefectClass.compareTo()
方法的实现是不正确的,因为它应该比较这两个对象,并返回第一个对象是更低(-1)、相等(0)还是更大(1)到第二个对象(并且不仅指示它们是否与您的情况相同)正在返回字符串
我将实现以下方法:
public int compareTo(DefectClass o) {
return o.getDefectClassTitle().compareTo(this.getDefectClassTitle());
}
您甚至不需要实现
Comparable
,因为您提供了自己的比较器
按如下方式使用:
Collections.sort(remarks, (r1, r2) -> r1.getDefectClass().getDefectClassTitle().compareTo(r2.getDefectClass().getDefectClassTitle()));
您甚至不需要实现Comparable
,因为您提供了自己的比较器
按如下方式使用:
Collections.sort(remarks, (r1, r2) -> r1.getDefectClass().getDefectClassTitle().compareTo(r2.getDefectClass().getDefectClassTitle()));
对于实现<代码>Comparable
的类,使用其中一个。1.<代码>Collections.sort()
与新的<代码>比较器一起使用<代码>Collections.sort()
。使用<代码>返回o.getDefectClassTitle().compareTo(this.getDefectClassTitle())
。否则,您永远不会返回-1
。检查合同时,您必须返回-1
、0
和1
。您必须使用compareTo方法创建订单。您不能检查是否相等,而必须确定哪个更大或更低。如果要对类的不同属性排序,请使用第一个选项。使用使用新的Comparator
2.Collections.sort()
。Collections.sort()
用于实现Comparable
的类。使用返回o.getDefectClassTitle().compareTo(this.getDefectClassTitle())
。否则,您永远不会返回-1
。检查合同时,您必须返回-1
、0
和1
。您必须使用compareTo方法创建订单。您不能检查是否相等,而必须确定哪个更大或更低。如果要对类的不同属性排序,请使用第一个选项。