黑马程序员技术交流社区

标题: collections 的排序结果 [打印本页]

作者: 记得上线    时间: 2012-7-18 12:44
标题: collections 的排序结果
本帖最后由 记得上线 于 2012-7-18 17:36 编辑

import java.util.*;
class CollectionsDemo
{
public static void sop(Object  obj)
{
  System.out.println(obj);
}
public static void main(String[] args)
{
  List<String> list=new ArrayList<String>();
  
  list.add("abcd");
  list.add("aaa");
  list.add("zz");
  list.add("kkkkk");
  list.add("qq");
  list.add("z");
Collection.sort(list);
sop(list);
  Collections.sort(list,new StrlenComparator());//条用自己的比较器,但比较的结构还是和他自己的比较器一样,我的比较器是按数组集合的长度排序
  sop(list);
  
}
}
class StrlenComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
  if(s1.length()>s2.length())
     return 1;
  if(s1.length()<s2.length())
   return 2;
  return s1.compareTo(s2);
}
}

作者: 李伟    时间: 2012-7-18 13:26
class StrlenComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
  if(s1.length()>s2.length())
     return 1;
  if(s1.length()<s2.length())
   return 2;//改成return 0;
return s1.compareTo(s2);
}
}

作者: 记得上线    时间: 2012-7-18 13:35
李伟 发表于 2012-7-18 13:26
class StrlenComparator implements Comparator
{
public int compare(String s1,String s2)

谢谢  擦 自己太粗心了,
作者: 黄丽慧    时间: 2012-7-18 13:36
你要问的到底是什么问题。。
作者: 黑马-王言龙    时间: 2012-7-18 13:36
if(s1.length()>s2.length())
     return 1;
  if(s1.length()<s2.length())
   return -2;       //这里应该是一个负数
  return s1.compareTo(s2);

作者: 黑马-王言龙    时间: 2012-7-18 13:37
这是完整的OK代码:(你复制来的还有几处小错误)
  1. class Demo {
  2.         public static void sop(Object obj) {
  3.                 System.out.println(obj);
  4.         }

  5.         public static void main(String[] args) {
  6.                 List<String> list = new ArrayList<String>();

  7.                 list.add("abcd");
  8.                 list.add("aaa");
  9.                 list.add("zz");
  10.                 list.add("kkkkk");
  11.                 list.add("qq");
  12.                 list.add("z");
  13.                 Collections.sort(list);
  14.                 sop(list);
  15.                 Collections.sort(list, new StrlenComparator());// 条用自己的比较器,但比较的结构还是和他自己的比较器一样,我的比较器是按数组集合的长度排序
  16.                 sop(list);

  17.         }
  18. }

  19. class StrlenComparator implements Comparator<String> {
  20.         public int compare(String s1, String s2) {
  21.                 if (s1.length() > s2.length())
  22.                         return 1;
  23.                 else if (s1.length() < s2.length())
  24.                         return -2;
  25.                 else return s1.compareTo(s2);
  26.         }
  27. }
复制代码





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