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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 记得上线 初级黑马   /  2012-7-18 12:44  /  1651 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 记得上线 于 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);
}
}

5 个回复

倒序浏览
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:26
class StrlenComparator implements Comparator
{
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);
回复 使用道具 举报
这是完整的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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马