黑马程序员技术交流社区

标题: 集合集合集合大神赐教 [打印本页]

作者: rose_xiaomei    时间: 2015-6-10 19:13
标题: 集合集合集合大神赐教
本帖最后由 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. }
复制代码

作者: Monster    时间: 2015-6-10 19:49
先不管,学完泛型在回来看就知道了
作者: 邱石    时间: 2015-6-10 21:14
问题出在你定义的去重的方法里
//定义去除重复元素方法
    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;
    }
作者: 杜黎明    时间: 2015-6-10 21:22
。。。。路过  学习
作者: 付欢    时间: 2015-6-10 21:42
  if (!newal.contains(obj)) {//这里应该用contains判断是否包含,而不是判断集合与对象是否相同
                            newal.add(obj);

就是这句
作者: rose_xiaomei    时间: 2015-6-13 21:48
邱石 发表于 2015-6-10 21:14
问题出在你定义的去重的方法里
//定义去除重复元素方法
    public static ArrayList singleElement(ArrayL ...

能直接点吗?
作者: rose_xiaomei    时间: 2015-6-13 23:11
邱石 发表于 2015-6-10 21:14
问题出在你定义的去重的方法里
//定义去除重复元素方法
    public static ArrayList singleElement(ArrayL ...

额,我知道了...
作者: 邱石    时间: 2015-6-14 13:09
rose_xiaomei 发表于 2015-6-13 23:11
额,我知道了...

加油。加油




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