java compare 降序/升序怎么确定

privateclassComparatorListimplementsComparator{publicintcompare(Objectarg0,Objectarg1... private class ComparatorList implements Comparator {
public int compare(Object arg0, Object arg1) {
ErpAccountCheckDetail cd1 = (ErpAccountCheckDetail)arg0;
ErpAccountCheckDetail cd2 = (ErpAccountCheckDetail)arg1;
return cd1.getCheckDate().compareTo(cd2.getCheckDate());
}
}
return cd1.getCheckDate().compareTo(cd2.getCheckDate());返回值是怎么确定升序降序的,返回值不是有可能为1,-1,0吗,是怎么确定升序或是降序的
展开
 我来答
巨人战舰
2014-02-28 · TA获得超过186个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:154万
展开全部
我印象中如果不重写compareTo方法那返回值都是-1吧......
我一般都是实现Comparable接口,重写CompareTo方法就可以了。
至于降序升序,可以这样比较:
假如A的值大于B,你返回1。这样调用Collections.sort()方法就是升序
假如A的值大于B,你返回-1。这样调用Collections.sort()方法就是降序
一般比较的都是对象中一个具体的数值。不知道你的类的构造,不好给例子
更多追问追答
追问
cd1.getCheckDate().compareTo(cd2.getCheckDate())返回值不是一会1,一会-1吗,到底什么时候升序什么时候降序呢
追答
怎么会?你用System.out.println(cd1.getCheckDate().compareTo(cd2.getCheckDate()))打印出结果看的吗?
yahoo_kara
2014-02-28 · TA获得超过137个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:143万
展开全部

先举个例子

1 2 5 3 6 9 7

从大家的认知来看,上面的数字从小到大为

1 2 3 5  6 7 9

 

但是如果是一对的字符串或者对象呢?

那么就需要Comparator来自定义字符串或对象的比较方法,来排序了。

aa  bb cc  cc  ab

如果你在Comparator中自定义c是大于b   b是大于a的 那么

降序排序就是

aa ab bb cc cc

 

对于 public int compare(Object arg0, Object arg1)的理解

如果放回1  说明arg0 > arg1  如 2  1

如果放回0  说明arg0 = arg1  如 cc  cc

如果放回-1 说明arg0 < arg1  如 6  7

 

所以如果你希望

1 2 5 3 6 9 7 的排序变成 离5最接近的先输出那么如下代码(降序)

 public int compare(Object arg0, Object arg1) {
            Integer cd1 = (Integer)arg0;
            Integer cd2 = (Integer)arg1;
            if (Math.abs(5-cd1)-Math.abs(5-cd2)>0)
                return 1;
            if (Math.abs(5-cd1)-Math.abs(5-cd2)==0)
                return 0;
            if (Math.abs(5-cd1)-Math.abs(5-cd2)<0)
                return -1;
 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-28
展开全部
String 是字符串,它的比较用compareTo方法,它从第一位开始比较,如果遇到不同的字符,则马上返回这两个字符的ascii值差值..返回值是int类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
super_wheat
2018-07-26
知道答主
回答量:21
采纳率:0%
帮助的人:6832
展开全部
参数o1 o2 升序

参数o2 o1 降序

public int compare(String o1, String o2) {
    //升序
    return o1.compareTo(o2); 
}


public int compare(String o1, String o2) {
    //降序
    return o2.compareTo(o1); 
}

这个是不是稍微好理解一点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式