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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rose_xiaomei 中级黑马   /  2015-6-10 19:13  /  329 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 rose_xiaomei 于 2015-6-13 23:13 编辑

今天练习Arraylist,在MyEclipse写到毕老师那么段代码,但是一直出现黄色的警告,程序也没有得到预期的效果,求大神赐教。警告提示如下
Type safety: The method add(Object) belongs to the raw type ArrayList. References to generic type ArrayList<E> should be parameterized
  1. package ListTest;
  2. import java.util.*;

  3. //将自定义对象作为元素储存在Arraylist数组中,并去除重复元素

  4. //定义一个Person类 对外提供Get Set方法
  5. class Person{
  6.         private String name;
  7.         private int age;
  8.          Person(String name,int age){
  9.                 this.name=name;
  10.                 this.age=age;
  11.         }
  12.         public String getName (){
  13.                 return name;
  14.         }
  15.         public int getAge(){
  16.                 return age;
  17.         }
  18.         //提供对象比较的Eqeals方法
  19.         public boolean equals(Object obj){
  20.                 if (!(obj instanceof Person) ){
  21.                         return false;
  22.                 }
  23.                 Person p = (Person)obj;
  24.                 return this.name.equals(p.name) && this.age==p.age;
  25.         }
  26. }

  27. public class ArratListDemo {
  28.         
  29.         public static void sop(Object obj){
  30.                 System.out.println(obj);
  31.         }
  32.         public static void main(String[] args) {
  33.                
  34.                 ArrayList al = new ArrayList();
  35.                 al.add(new Person("java01", 1));// al.add("java01",1) ==Object obj = new Person("java01", 1);向上提升,在存储时候编译错误 Obj中没有.getname()
  36.                 al.add(new Person("java02", 2));
  37.                 al.add(new Person("java03", 3));
  38.                 al.add(new Person("java04", 4));
  39.                 al.add(new Person("java01", 1));
  40.                
  41.                 al=singleElement(al);
  42.                
  43.                 //打印姓名年龄
  44.                 Iterator it = al.iterator();
  45.                 while (it.hasNext()) {
  46.                         //Object obj = it.next();
  47.                         //Person p = (Person) obj;
  48.                         Person p = (Person)it.next();
  49.                         sop("name :"+p.getName()+"---Age :"+p.getAge());
  50.                 }
  51.         }

  52.         //定义去除重复元素方法
  53.         public static ArrayList singleElement(ArrayList al)
  54.         {
  55.                 //定义容器
  56.                 ArrayList newal = new ArrayList();
  57.                 Iterator it= al.iterator();
  58.                 while (it.hasNext()) {
  59.                         Object obj = it.next();
  60.                         if (!newal.equals(obj)) {
  61.                                 newal.add(obj);
  62.                         }
  63.                 }
  64.                 return newal;
  65.         }
  66. }
复制代码

7 个回复

倒序浏览
先不管,学完泛型在回来看就知道了
回复 使用道具 举报
问题出在你定义的去重的方法里
//定义去除重复元素方法
    public static ArrayList singleElement(ArrayList al)
    {
            //定义容器
            ArrayList newal = new ArrayList();
            Iterator it= al.iterator();
            while (it.hasNext()) {
                    Object obj = it.next();
                    if (!newal.contains(obj)) {//这里应该用contains判断是否包含,而不是判断集合与对象是否相同
                            newal.add(obj);
                    }
            }
            return newal;
    }
回复 使用道具 举报
。。。。路过  学习
回复 使用道具 举报
  if (!newal.contains(obj)) {//这里应该用contains判断是否包含,而不是判断集合与对象是否相同
                            newal.add(obj);

就是这句
回复 使用道具 举报
邱石 发表于 2015-6-10 21:14
问题出在你定义的去重的方法里
//定义去除重复元素方法
    public static ArrayList singleElement(ArrayL ...

能直接点吗?
回复 使用道具 举报
邱石 发表于 2015-6-10 21:14
问题出在你定义的去重的方法里
//定义去除重复元素方法
    public static ArrayList singleElement(ArrayL ...

额,我知道了...
回复 使用道具 举报
邱石 中级黑马 2015-6-14 13:09:08
8#

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