黑马程序员技术交流社区

标题: 这里的return这么理解 [打印本页]

作者: 风云    时间: 2013-5-19 15:35
标题: 这里的return这么理解
本帖最后由 风云 于 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的长度吗?
作者: 郑齐育    时间: 2013-5-19 17:53
你这代码明显是为了自定义一个字符串容器的派寻方法,并且自己实现了该容器的比较器,比较器需要实现比较方法,比较方法根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。 也就是说返回值是比较器的比较方法的判断依据。
作者: 翟宝海    时间: 2013-5-19 18:14
本帖最后由 翟宝海 于 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其他的属性,再根据返回的结果排序;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2