黑马程序员技术交流社区

标题: 请教 比较器中倒序比较字符串的问题 [打印本页]

作者: yujiangjiao    时间: 2014-3-25 11:10
标题: 请教 比较器中倒序比较字符串的问题
  1. class strComparator implements Comparator<String>
  2. {
  3.         public int compare(String s1,String s2)
  4.         {
  5.                 //return s1.compareTo(s2);//正序比较级和中的字符串,按照字母的自然顺序比较
  6.                 return s2.compareTo(s1);//将s1,s2互换位置,为什么可以倒序比较字符串呢?
  7.         }
  8. }
复制代码

代码如上,我不理解,        为什么将s1,s2互换位置,字符串就是倒序比较的了?
作者: zhxu188    时间: 2014-3-25 11:34
s1.compareTo(s2)返回的是 负整数、零或正整数,例如s1是d,s2是c则 返回正数,如果将s1和s2调换位置s2.compareTo(s1),相当于c在前,d在后,则返回负数。其实所谓的倒叙比较就是原来返回的值和现在返回的值互为相反数
作者: 李东梁    时间: 2014-3-25 11:59
  1. class strComparator implements Comparator<String>
  2. {
  3.         public int compare(String s1,String s2)
  4.         {
  5.                 //return s1.compareTo(s2);//正序比较级和中的字符串,按照字母的自然顺序比较
  6.                 return s2.compareTo(s1);//将s1,s2互换位置,为什么可以倒序比较字符串呢?
  7.         }
  8. }
复制代码

这是自定义的一个比较器,实现了Comparator,compareTo();是封装在内部的一个比较方法,会用就行了,不用深究它内部是怎么实现的
作者: 赵彦丰    时间: 2014-3-25 14:04
  1. /*   如果他们第一个返回是1  <span style="color: rgb(102, 102, 102); font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px; line-height: 21.600000381469727px; ">他们俩个反过来比较就成 -1了   TreeSet 排序只跟返回值有关系 不管其他</span>
  2. *                         TreeSet ts = new TreeSet();
  3.                
  4.                 ts.add("lisi01");
  5.                 ts.add("lisi02");
  6.                 ts.add("lisi03");
  7.                 ts.add("lisi04");
  8.                
  9. * */  

  10. class strComparator implements Comparator<String>
  11. {
  12.         public int compare(String s1,String s2)
  13.         {
  14.                 //return s1.compareTo(s2);//比如上面得那组 如先有lisi01了 当lisi02来了 比较 返回 1
  15.                 return s2.compareTo(s1);// 他们俩个反过来比较就成 -1了   TreeSet 排序只跟返回值有关系 不管其他
  16.         }
  17. }
复制代码





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