HashSet去重的基本的原理:
    答:调用被添加元素的hashCode( ),和HashSet中已有元素的hashCode( )比较是否相同;如果不相同,直接存储;如果相同,调用equals方法比较是否相同;不相同,则直接存储;相同,则认为是同一元素,不存储。
    HashSet默认的去重的方法=====> 重复基本数据类型 引用类型自动过滤
    当我们需要对对象类型去重时,需要在JavaBean继承Comparable接口,然后重写hashCode( )和equals方法。
    ``package code3;


    public class User implements Comparable
    {


    public User(String name, int usernum)
    {
    super();
    this.name = name;
    this.usernum = usernum;
    }

    private String name;


    private int usernum;

    public String getName()
    {
    return name;
    }

    public void setName(String name)
    {
    this.name = name;
    }

    public int getUsernum()
    {
    return usernum;
    }

    1. public void setUsernum(int usernum)


    {
    this.usernum = usernum;
    }


    @Override
    public int hashCode()
    {
    // TODO Auto-generated method stub
    //给对象hascode码一个算法
    //hashCode()的默认实现是为不同的对象返回不同的整数.
    //有一个设计原则是,hashCode对于同一个对象,不管内部怎么改变,应该都返回相同的整数值.
    return this.name.hashCode()+this.usernum;
    }

    @Override
    public boolean equals(Object obj)
    {
    // TODO Auto-generated method stub


    if(this==obj)
    {
    return true;
    }
    else if(obj instanceof User)
    {
    User u=(User)obj;


    return (this.name+this.usernum).equals(u.name+u.usernum);
    }
    return false;
    }

    }

    <br />