黑马程序员技术交流社区

标题: 编译总是出错,帮忙找找茬 [打印本页]

作者: Jim-剣◆﹏    时间: 2013-10-17 23:42
标题: 编译总是出错,帮忙找找茬
本帖最后由 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 个错误


作者: 飘落    时间: 2013-10-17 23:51
本帖最后由 飘落 于 2013-10-18 08:01 编辑

ArrayList的底层结构是数组,不需要比较器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二叉树的数据结构,需要比较器。
作者: 風諾    时间: 2013-10-17 23:53
ArrayList构造方法
1、ArrayList()
2、ArrayList(Collection<? extends E> c)
3、ArrayList(int initialCapacity)
什么时候能传递你这个了,TreeSet什么的倒是可以
作者: Jim-剣◆﹏    时间: 2013-10-18 00:23
飘落 发表于 2013-10-17 23:51
ArrayList的底层结构是数组,不需要构造器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二 ...

粗心啊...找了半天,这下记忆深刻了
作者: Jim-剣◆﹏    时间: 2013-10-18 00:24
飘落 发表于 2013-10-17 23:51
ArrayList的底层结构是数组,不需要构造器;
楼主把ArrayList该为TreeSet后,就没问题了,
TreeSet底层是二 ...

你是对的,以后要细心才行
作者: To    时间: 2013-10-20 19:03
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




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