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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-李勇 中级黑马   /  2012-7-19 02:26  /  2738 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;

class demo
{
public static void main(String[] args)
{
        TreeSet ts =new TreeSet(new SLC());
        ts.add("abcd");
        ts.add("c");
        ts.add("acb");
        ts.add("ddj");
                System.out.println("m");
        Iterator it=ts.iterator();
        while(it.hasNext())
        {
                System.out.println(it.next());
        }

}
}
class SLC implements Comparator
{
        public int compare(Object o1,Object o2)
        {
                String s1=(String)o1;
                String s2=(String)o2;
                System.out.println("s");

        if(s1.length()>s2.length())
                return 1;
        if(s1.length()==s2.length())
                return 0;
        return -1;


        }       
}


未命名.JPG (10.46 KB, 下载次数: 28)

未命名.JPG

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
你到底想要干什么?看的我都凌乱了。。。。
回复 使用道具 举报
没挂啊,程序不是运行挺不错的么?有什么问题?s
s
s
s
m
c
acb
abcd
回复 使用道具 举报
  1. package demo;

  2. import java.util.*;

  3. public class ddd {
  4.         public static void main(String[] args) {
  5.                 TreeSet ts = new TreeSet(new SLC());
  6.                 ts.add("abcd");
  7.                 ts.add("c");
  8.                 ts.add("acb");
  9.                 ts.add("ddj");
  10.                 System.out.println("m");
  11.                 Iterator it = ts.iterator();
  12.                 while (it.hasNext()) {
  13.                         System.out.println(it.next());
  14.                 }

  15.         }
  16. }

  17. class SLC implements Comparator {
  18.         public int compare(Object o1, Object o2) {
  19.                 String s1 = (String) o1;
  20.                 String s2 = (String) o2;
  21.                 System.out.println("s");

  22.                 if (s1.length() > s2.length())
  23.                         return 1;
  24.                 if (s1.length() == s2.length())
  25.                         return 0;
  26.                 return -1;

  27.         }
  28. }
复制代码
你的程序,运行截图:
然后是这么一个过程,你新建了一个实现了你自定义比较器的TreeSet,然后调用add()方法时,会调用你的Comparator接口中的compare()方法,你的compare()方法中有输出语句,可以看到,比较了4次,即每加入一个对象,都要进行一次比较,TreeSet中加完数据,然后执行输出m的语句,接下来,取到TreeSet的迭代器对象,循环取出对象。

111.JPG (13.96 KB, 下载次数: 29)

运行截图

运行截图

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
看来是机子挂了,我的结果就是我上的图,根本没有输出任何东东{:soso_e101:}所以才不解。
回复 使用道具 举报
前几天我也碰到过这种情况  怪的很
回复 使用道具 举报
包晗 发表于 2012-7-19 11:39
前几天我也碰到过这种情况  怪的很

怎么解决的?
我单位的下午去行了,没问题。
家里的就是上面那样,没有任何输出。郁闷
回复 使用道具 举报
包晗 中级黑马 2012-7-19 20:05:37
8#
黑马-李勇 发表于 2012-7-19 18:30
怎么解决的?
我单位的下午去行了,没问题。
家里的就是上面那样,没有任何输出。郁闷 ...

重新换个地方存贮
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马