黑马程序员技术交流社区

标题: 代码在判断时怎么比较的小问题 [打印本页]

作者: 学习代码    时间: 2014-3-26 21:23
标题: 代码在判断时怎么比较的小问题
  1. class  ReverseOrderDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 TreeSet<String> tr = new TreeSet<String>(new Demo1());
  6.                 tr.add("abw");
  7.                 tr.add("abewc");
  8.                 tr.add("abcd");
  9.                 tr.add("ae");
  10.                 Iterator<String> it = tr.iterator();
  11.                 while(it.hasNext())
  12.                 {
  13.                         System.out.println(it.next());
  14.                 }

  15.         }
  16. }

  17. class Demo1 implements Comparator<String>
  18. {
  19.         public int compare(String o1,String o2)
  20.         {
  21.                 if(o1.length()>o2.length())//这里以及下面的代码在比较的时候 是怎么读的啊  
  22.                                                                                 //大侠 能用语言来描述一下吗?
  23.                         return -1;                                        //比的时候是不是两个字符串,真正的长度呢?
  24.                 if(o1.length()<o2.length())
  25.                         return 1;
  26.                 return o1.compareTo(o2);
  27.         }
  28. }
复制代码

谢谢
作者: 谭荣强    时间: 2014-3-26 22:44
if(o1.length()>o2.length())//.length()是获取字符串的长度,当然是按长度比的。如果o1>02,返回-1
   return -1;
if(o1.length()<o2.length())//同上
                        return 1;
return o1.compareTo(o2);//如果字符串长度相等,那就调用字符串对象的compareTo()方法,按照默认的顺序排列


作者: papercup    时间: 2014-3-26 22:46
查看文档,comparator中的compare方法是这么说的:
参数:
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。
返回:
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
重写后意思就是:
o1的长度比o2长的时候就返回-1(即负整数)
反之就返回 1(正整数)
compareTo返回的是o1和o2的长度差
treeset就根据你定义的比较器进行排序。




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