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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 学习代码 中级黑马   /  2014-3-26 21:23  /  904 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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:33

3 个回复

倒序浏览
if(o1.length()>o2.length())//.length()是获取字符串的长度,当然是按长度比的。如果o1>02,返回-1
   return -1;
if(o1.length()<o2.length())//同上
                        return 1;
return o1.compareTo(o2);//如果字符串长度相等,那就调用字符串对象的compareTo()方法,按照默认的顺序排列

回复 使用道具 举报
查看文档,comparator中的compare方法是这么说的:
参数:
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。
返回:
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
重写后意思就是:
o1的长度比o2长的时候就返回-1(即负整数)
反之就返回 1(正整数)
compareTo返回的是o1和o2的长度差
treeset就根据你定义的比较器进行排序。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马