A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风云 中级黑马   /  2013-5-19 15:35  /  1369 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 风云 于 2013-5-19 19:13 编辑

import java。util.*
class Collectionsdemo
{
public static void main(string[] args)
      sortDemo();
   }
     public static void  sortDemo()
{
List<string> list=new Arraylist<string>();
list.add("abcd");
list.add("zzz");}
list.add("kbzd");}
Collections.sort(list new strlenCompartor();
calss strlencomparator implements  comparator<string>
{
   public int compare(string s1,string s2)
  {
          if(s1.length()>s2.length())
            return 1;
       if(s1.length()<s2.length())
            return -1;
       return s1.compareTo(s2);
}
在这里当return分别返回1,-1,0 是什么作用 返回的形式是s1,s2的长度吗?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

2 个回复

倒序浏览
你这代码明显是为了自定义一个字符串容器的派寻方法,并且自己实现了该容器的比较器,比较器需要实现比较方法,比较方法根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。 也就是说返回值是比较器的比较方法的判断依据。
回复 使用道具 举报
本帖最后由 翟宝海 于 2013-5-19 18:16 编辑

当我们比较两个具备可比性的事物时,必然会有一个结果:如A与B比较长度,只会有三种结果:A>B、A<B、A=B;这时可以分配用1、0、-1代表这三种状态,并用return将这三种状态告诉调用比较器的排序对象,最终让CPU知道知道A与B之间的相互关系,然后根据它们的相互关系給它们排序。
举例来说,我们建一个一维坐标系,取一点a作为原点(0)对应A,这时来了一个B与A相比较,我们就可以根据必然会有的结果:1、0、-1来给B在坐标系上分配其对应的位置:1,B在A左边;
      -1,B在A右边;
       0,比较A与B其他的属性,再根据返回的结果排序;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马