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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jim-剣◆﹏ 高级黑马   /  2013-10-17 23:42  /  1139 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Jim-剣◆﹏ 于 2013-10-21 00:04 编辑
  1. import java.util.*;
  2. class GennerDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<String> a = new ArrayList<String>(new MyCompareByLength());
  7.                 a.add("hjgfd");
  8.                 a.add("bvsdf");
  9.                 a.add("dsfk");
  10.                 a.add("asfd");
  11.                 a.add("ytre");
  12.                 Iterator<String> it = a.iterator();
  13.                 while(it.hasNext())
  14.                 {
  15.                         System.out.println(it.next());

  16.                 }
  17.         }
  18. }
  19. class MyCompareByLength implements Comparator<String>
  20. {
  21.         public int compare(String o1,String o2)
  22.         {
  23.                 int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));
  24.                 if(num==0)
  25.                         return o1.compareTo(o2);
  26.                 return num;
  27.         }
  28. }
复制代码
照着视频打的代码编译不通过,检查好几遍
提示:
GennerDemo.java:10: 错误: 对于ArrayList(MyCompareByLength), 找不到合适的构造器
                ArrayList<String> a = new ArrayList<String>(new MyCompareByLengt
h());
                                      ^
    构造器 ArrayList.ArrayList(Collection<? extends String>)不适用
      (无法通过方法调用转换将实际参数MyCompareByLength转换为Collection<? extends
String>)
    构造器 ArrayList.ArrayList()不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 ArrayList.ArrayList(int)不适用
      (无法通过方法调用转换将实际参数MyCompareByLength转换为int)
1 个错误

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 飘落 于 2013-10-18 08:01 编辑

ArrayList的底层结构是数组,不需要比较器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二叉树的数据结构,需要比较器。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ArrayList构造方法
1、ArrayList()
2、ArrayList(Collection<? extends E> c)
3、ArrayList(int initialCapacity)
什么时候能传递你这个了,TreeSet什么的倒是可以
回复 使用道具 举报
飘落 发表于 2013-10-17 23:51
ArrayList的底层结构是数组,不需要构造器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二 ...

粗心啊...找了半天,这下记忆深刻了
回复 使用道具 举报
飘落 发表于 2013-10-17 23:51
ArrayList的底层结构是数组,不需要构造器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二 ...

你是对的,以后要细心才行
回复 使用道具 举报
To 金牌黑马 2013-10-20 19:03:34
地板
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马