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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王亚飞 于 2013-7-3 11:53 编辑
  1. //ArrayList打印自定义对象,并且去除重复元素

  2. import java.util.*;
  3. class Person
  4. {
  5. private String name;
  6. private int age;
  7. Person(String name,int age){
  8. this.name = name;
  9. this.age = age;
  10. }
  11. public String getName(){
  12. return name;
  13. }
  14. public int getAge(){
  15. return age;
  16. }
  17. public boolean equals(Object obj){
  18. if(!(obj instanceof Person))
  19. return false;
  20. Person p = (Person)obj;
  21. return this.name.equals(p.name)&&this.age == p.age;
  22. }
  23. }

  24. class UserDefind {
  25. public static void main(String[] args) {

  26. ArrayList al = new ArrayList();
  27. al.add(new Person("张三",15));
  28. al.add(new Person("张si",56));
  29. al.add(new Person("张si",56));
  30. al.add(new Person("张wu",87));
  31. al.add(new Person("张liu",38));
  32. al.add(new Person("张liu",38));
  33. al.add(new Person("张qi",45));

  34. al = method(al);//.............................就是行,报错不兼容的类型

  35. Iterator it = al.iterator();
  36. while(it.hasNext()){
  37. Person p = (Person)it.next();
  38. System.out.println(p.getName()+"--"+p.getAge());
  39. }


  40. }
  41. public static List method(ArrayList al){
  42. ArrayList newal = new ArrayList();

  43. Iterator lit = al.iterator();
  44. while(lit.hasNext()){
  45. Object obj = lit.next();

  46. if(!newal.contains(obj))
  47. newal.add(obj);

  48. }
  49. return newal;
  50. }
  51. }
复制代码
38行不兼容的类型.....怎么会出现这个错误,修改方法

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

5 个回复

正序浏览
因为你用Arraylist创建的对象a1所以在调用函数的时候返回值必须是ArrayList类型
  1. <p>//ArrayList打印自定义对象,并且去除重复元素</p><p>import java.util.*;
  2. class Person
  3. {
  4. private String name;
  5. private int age;
  6. Person(String name,int age){
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public String getName(){
  11. return name;
  12. }
  13. public int getAge(){
  14. return age;
  15. }
  16. public boolean equals(Object obj){
  17. if(!(obj instanceof Person))
  18. return false;
  19. Person p = (Person)obj;
  20. return this.name.equals(p.name)&&this.age == p.age;
  21. }
  22. }</p><p>class UserDefind {
  23. public static void main(String[] args) {</p><p>ArrayList al = new ArrayList();
  24. al.add(new Person("张三",15));
  25. al.add(new Person("张si",56));
  26. al.add(new Person("张si",56));
  27. al.add(new Person("张wu",87));
  28. al.add(new Person("张liu",38));
  29. al.add(new Person("张liu",38));
  30. al.add(new Person("张qi",45));</p><p>al = method(al);//.............................就是行,报错不兼容的类型</p><p>Iterator it = al.iterator();
  31. while(it.hasNext()){
  32. Person p = (Person)it.next();
  33. System.out.println(p.getName()+"--"+p.getAge());
  34. }</p><p>
  35. }
  36. public static ArrayList method(ArrayList al){
  37. ArrayList newal = new ArrayList();</p><p>Iterator lit = al.iterator();
  38. while(lit.hasNext()){
  39. Object obj = lit.next();</p><p>if(!newal.contains(obj))
  40. newal.add(obj);</p><p>}
  41. return newal;
  42. }
  43. }
  44. </p><p> </p>
复制代码
回复 使用道具 举报
王靖远 发表于 2013-7-3 11:50
public static List method(ArrayList al){ 的、你把这里的返回值类型改成ArrayList试试啊 ...

恩恩,确实是这个问题
回复 使用道具 举报
public static List method(ArrayList al){ 的、你把这里的返回值类型改成ArrayList试试啊

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
j816326 发表于 2013-7-3 11:47
method 的方法的返回值是List 但是你接收的却是ArrayList 所以出错了。该下返回值, 或者接收的类型改变下 ...

果然.....多谢,还有个疑问,List不是ArrayList的父类嘛,这样也不行?
回复 使用道具 举报
  1. //ArrayList打印自定义对象,并且去除重复元素


  2. import java.util.*;

  3. class Person

  4. {

  5. private String name;

  6. private int age;

  7. Person(String name,int age){

  8. this.name = name;

  9. this.age = age;

  10. }

  11. public String getName(){

  12. return name;

  13. }

  14. public int getAge(){

  15. return age;

  16. }

  17. public boolean equals(Object obj){

  18. if(!(obj instanceof Person))

  19. return false;

  20. Person p = (Person)obj;

  21. return this.name.equals(p.name)&&this.age == p.age;

  22. }

  23. }


  24. class UserDefind {

  25. public static void main(String[] args) {


  26. ArrayList al = new ArrayList();

  27. al.add(new Person("张三",15));

  28. al.add(new Person("张si",56));

  29. al.add(new Person("张si",56));

  30. al.add(new Person("张wu",87));

  31. al.add(new Person("张liu",38));

  32. al.add(new Person("张liu",38));

  33. al.add(new Person("张qi",45));


  34. al = method(al);//.............................就是行,报错不兼容的类型


  35. Iterator it = al.iterator();

  36. while(it.hasNext()){

  37. Person p = (Person)it.next();

  38. System.out.println(p.getName()+"--"+p.getAge());

  39. }



  40. }

  41. public static List method(ArrayList al){

  42. ArrayList newal = new ArrayList();


  43. Iterator lit = al.iterator();

  44. while(lit.hasNext()){

  45. Object obj = lit.next();


  46. if(!newal.contains(obj))

  47. newal.add(obj);


  48. }

  49. return newal;

  50. }
  51. }
复制代码
method 的方法的返回值是List 但是你接收的却是ArrayList 所以出错了。该下返回值, 或者接收的类型改变下

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马