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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.*;


  2. class  GenericDemo2
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet<String> ts = new TreeSet<String>();


  7.                 ts.add("abcd");
  8.                 ts.add("cf");
  9.                 ts.add("erd");
  10.                 ts.add("fds");
  11.                 ts.add("j");
  12.                 ts.add("dfaffdf");

  13.                 Iterator<String> it = ts.iterator();

  14.                 while (it.hasNext())
  15.                 {
  16.                         String s = it.next();

  17.                         System.out.println(s);
  18.                 }
  19.         }
  20. }

  21. class LenComparator implements Comparator<String>
  22. {
  23.         public int compare(String o1,String o2)
  24.         {
  25.                 int num = new Integer(o2.length()).compareTo(new Integer(o1.length()));

  26.                 if (num==0)
  27.                 {
  28.                         return o2.compareTo(o1);
  29.                 }
  30.                 return num;
  31.         }
  32. }
复制代码


QQ截图20140508203710.png (1.48 KB, 下载次数: 15)

QQ截图20140508203710.png

4 个回复

倒序浏览
因为你的TreeSet集合根本就不知道,你想要根据长度比较,这样就好了啊TreeSet<String> ts = new TreeSet<String>(new LenComparator());
回复 使用道具 举报 1 0
不是,你觉得你上面那个类和下面那个类有什么关联吗?使用TreeSet的时候,要使得存入TreeSet里面的对象具有比较性,不具备比较性的对象可以自身实现比较方法,也可以构造一个比较器,传入集合,实现对象之间的比较,这里你是使用了第二种比较灵活的方法,但是你没将创建的比较器传入集合中,所以得到你的那个结果。按照楼上的说法做就对了
回复 使用道具 举报 1 0
龙健 发表于 2014-5-9 00:02
不是,你觉得你上面那个类和下面那个类有什么关联吗?使用TreeSet的时候,要使得存入TreeSet里面的对象具有 ...

你们说得太对了,是的,
回复 使用道具 举报
龙健 发表于 2014-5-9 00:02
不是,你觉得你上面那个类和下面那个类有什么关联吗?使用TreeSet的时候,要使得存入TreeSet里面的对象具有 ...

感谢!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马