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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋旭东 中级黑马   /  2013-7-3 18:59  /  831 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • import java.util.Comparator;
  • import java.util.Iterator;
  • import java.util.TreeSet;
  • /*
  • 练习:按字符串长度排序。
  • */
  • class Demo{
  • public static void main(String [] args){
  • TreeSet ts = new TreeSet(new StringLengthComparator());
  • ts.add("a");
  • ts.add("adf");
  • ts.add("aa");
  • ts.add("aaa");
  • ts.add("aadf");
  • ts.add("addf");
  • Iterator it = ts.iterator();
  • while(it.hasNext()){
  • String s = (String) it.next();
  • System.out.println(s.length()+"\t"+s);
  • }
  • }
  • public static void sop(Object obj){
  • System.out.println(obj);
  • }
  • }
  • class StringLengthComparator implements Comparator{
  • @Override
  • public int compare(Object o1, Object o2) {
  • // TODO Auto-generated method stub
  • String s1 = (String) o1;
  • String s2 = (String) o2;
  • int num = s1.length()-s2.length();
  • if(num == 0)
  • return s1.compareTo(s2);
  • return num;
  • }
  • }
问题:StringLengthComparator 实现了 Comparator接口,可是Comparator接口有 compare 和 equals 两个方法,为何上面的代码只实现了一个方法也能够通过编译,还能正常运行?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马