黑马程序员技术交流社区

标题: 语句含义 [打印本页]

作者: 黑马斯巴达    时间: 2013-1-10 12:05
标题: 语句含义
本帖最后由 谢军 于 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;      
  }
}
作者: 黄锦成    时间: 2013-1-10 16:11
说一下我的理解:在TreeSet里面定义有一个比较器变量,new TreeSet时,传入比较器,比较器变量就有了指向。在add的时候,add方法里面调用了比较器的方法,对添加进集合的对象与已经添加进集合的对象进行比较。比较的内容就是你自己的比较器方法中的内容




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