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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
        ArrayList练习2:
                存储一个人类,姓名、年龄相同则视为同一个人。
                去除同一个元素
*/
import java.util.*;


class Man
{
        private String name;
        private int age;
        Man(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
        public String  getName()
        {
                return name;
        }
        
        public int getAge()
        {
                return age;        
        }
        public boolean equals(Object obj)//复写的equals方法:
        {
                if(!(obj instanceof Man))
                        return false;
                Man m=(Man)obj;
                return this.name.equals(m.name)&&this.age==m.age;

               
        }
}

class  DelArray2
{
        public static void main(String[] args)
        {


                ArrayList al=new ArrayList();
                al.add(new Man("zhangsan",13));
                al.add(new Man("zhangsan",13));
                al.add(new Man("lisi",16));
                al.add(new Man("lisi",16));

                Iterator it=al.iterator();
                while (it.hasNext())
                {
                        Man m=(Man)it.next();
                        System.out.println(m.getName()+"...."+m.getAge());
                }

                singleElement(al);

                for(Object obj:al)
                {
                        Man m=(Man)obj;
                        System.out.println(m.getName()+"...."+m.getAge());
                }
        }

        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))
                        {
                                newAl.add(obj);
                        }
                }
                return newAl;
        }
}

复写了Man类中的equals方法,为什么运行结果没有将重复的元素去除?
去除前:
zhangsan....13
zhangsan....13
lisi....16
lisi....16
去除后:
zhangsan....13
zhangsan....13
lisi....16
lisi....16
请按任意键继续. . .


3 个回复

倒序浏览
al =  singleElement(al);

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
汗,原来是这个,ok了。感谢。。。
回复 使用道具 举报
正在学习中,表示好复杂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马