Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按特定值对对象列表进行排序_Java_List_Sorting_Comparable - Fatal编程技术网

Java 按特定值对对象列表进行排序

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) {

我想根据另一个对象(DefectClass)中包含的值对对象(备注)列表进行排序

我有一个评论列表,我使用这个代码按照defectClass的标题对它们进行排序:

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方法创建订单。您不能检查是否相等,而必须确定哪个更大或更低。如果要对类的不同属性排序,请使用第一个选项。