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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马斯巴达 高级黑马   /  2013-1-10 12:05  /  1099 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢军 于 2013-1-10 12:08 编辑

import java.util.*;
class  TreeSetTest
{        
public static void main(String[] args)        
{               
TreeSet ts = new TreeSet(new StrLenComparator());//里面的new StrLenComparator()具体怎么如何将对象传进来的,搞不明白怎么传进来的,                                                                   传进来的具体是什么有什么作用呢?还有什么时候需要将这个传进来呢 {:soso_e135:}
               
ts.add("abcd");               
ts.add("cc");               
ts.add("cba");               
ts.add("aaa");               
ts.add("z");               
ts.add("hahaha");               
Iterator it = ts.iterator();               
while(it.hasNext())               
     {                        
System.out.println(it.next());               
     }      
  }
}
class StrLenComparator implements Comparator
   {        
public int compare(Object o1,Object o2)      
   {               
String s1 = (String)o1;               
String s2 = (String)o2;               
/*               
if(s1.length()>s2.length())                     
return 1;               
if(s1.length()==s2.length())                       
return 0;                       
*/                                       
int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));              
  if(num==0)                       
return s1.compareTo(s2);               
return num;      
  }
}

1 个回复

倒序浏览
说一下我的理解:在TreeSet里面定义有一个比较器变量,new TreeSet时,传入比较器,比较器变量就有了指向。在add的时候,add方法里面调用了比较器的方法,对添加进集合的对象与已经添加进集合的对象进行比较。比较的内容就是你自己的比较器方法中的内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马