黑马程序员技术交流社区

标题: list实现判断存在和移除底层调用的是equals [打印本页]

作者: jk7130866    时间: 2015-7-28 19:45
标题: list实现判断存在和移除底层调用的是equals
list集合判断元素的是否相同依据的是元素的equals方法;Remove也是equals,如果对象的类没有重写的Object的equals 方法就是比较对象是否同一个如果你建了一个新的对象肯定不同,要实现判断数据相同认为是一个对象需要重写Object 的equals方法
class ListDemo
{
        public static void sop(Object obj){
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                ArrayList al1=new ArrayList();
                        al1.add(new Person("lisi",30));
                               
                                al1.add(new Person("lis3",30));
               
                       
                al1=singleList(al1);
               
                   for(Iterator it =al1.iterator();it.hasNext();){
                           Person p=(Person)it.next();
                           sop(p.getName()+"    "+p.getAge());
                   }
        }
       
        public static ArrayList singleList(ArrayList al){//去掉相同元素的方法,
                //Iterator it=al.iterator();
                ArrayList newAl=new ArrayList();
                for(Iterator it=al.iterator();it.hasNext();){
                        Object obj=it.next();
                        //sop(obj);
                        if(!newAl.contains(obj)){
                                newAl.add(obj);
                        }

                }
                return newAl;
        }



}
class Person
{
        private String name;
        private int age;
        Person(String name,int age){
                this.name=name;
                this.age=age;
        }
        public String getName(){
                        return name;
        }
        public int getAge(){
                return age;
        }
        public boolean equals(Object o){
                        if(!(o instanceof Person))
                                throw new RuntimeException("leixing bufu");
                        System.out.println(this。name);//打印调用者的名字
                        Person p=(Person)o;
                        return name.equals(p.getName())&&age==p.getAge();

        }

}


作者: maizi1912    时间: 2015-7-28 20:51
学习一个    很不错
作者: jk7130866    时间: 2015-7-28 22:17
可以自己复写equals方法打印信息。看看




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