首页 > 编程知识 正文

beyond compare用法(compare和compareTo使用区别)

时间:2023-05-03 07:19:44 阅读:123909 作者:320

一.compare实现了Comparator接口,compareTo实现了compareable接口。 可以对对象和基本类型进行排序。 基本类型的排序可以直接调用Arrays.sort (和Conllections.sort )方法进行排序。 默认值为升序。 降序和对象排序需要重写相应的方法。

二。

公共int比较to (studento ) {

returnthis.age - o.age; //比较年龄(年龄升序)需按降序直接改为return o.age-this.age;

}

公共int比较(Integer o2,Integer o2 ) {

返回O1-O2; //默认升序需要降序直接返回O2-O1;

}

如果使用compareTo,则必须在要比较的实体类中实现compareable接口并重写compareTo (方法)。 比较到) )通常用于对象的比较排序。 比较) )通常用于对基本类型进行比较排序,但也可以对对象进行比较排序。

3 .为什么this.age - o.age和o1-o2是升序的? 请注意,在sort中默认值为升序。 这个一定要记住。

compare函数的返回值-1、1、0是什么意思?

返回值为-1,表示左边的数量小于右边的数量,左右的数量不交换。

返回值为0时,表示左边的数量等于右边的数量,左右的数量不交换。

返回值为1,表示左边的数量大于右边的数量,左右的数量会互换。 (不交换就不能维持升顺。

在上例中,this.age可以理解为左边的数,o.age可以理解为右边的数。

this.age-o.age0表示左边的数大于右边的数,return this.age-o.age返回正数,进行左右交换,因此最终输出为升序。

this.age-o.age0表示左边的数量小于右边的数量,return this.age-o.age返回负数,无需更换,因此最终输出为升序。

4 .比较对象的多个值时,请确保重写compareTo或compare方法

例如:1)在实体体系中,实现成绩从高到低、成绩相等、年龄低等。

公共int比较to (students tu ) {

if(this.Scorestu.Score ) {

返回- 1; //这里回到-1是因为左边比右边大,所以本来是降序,所以不用左右调换

}else{

}elseif(this.scorestu.score ) )

返回1; //这里返回1是因为左边比右边小,所以需要降序,所以返回1的话可以左右调换

}else{

if(this.agestu.age ) {

返回1;

}elseif(this.agestu.age ) )。

返回- 1;

}else{

返回0;

}

}

}

备注:判断中的条件中,左右情况原本和你的需求是升序还是降序一样,可以不用renturn -1左右代替。 否则,左右需要互换,默认为升序,所以不会混淆。 compare ) )方法的改写你也可以这么记住。

collections.sort(list,new ComparatorMenu ) @overridepublicintcompare ) Menu o2,Menu o2 ) returnO1.compareto ) O2 } ); 虽然compare可以与compareTo一起使用,但compareTo必须在相应的实体类中重写方法。

@ overridepublicintcompareto (menuo ) if ) integer.value of (this.id ) integer.value of (o.id ) ) { return -1; } else if (integer.value of (this.id ) integer.value of (o.id ) ) { return 1; }else { return 0; }这是id降序的写法,也可以直接

@ overridepublicintcompareto (menuo ) returno.id.com Pareto (this.id ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。