多语言展示
当前在线:1628今日阅读:126今日分享:42

java 重写equals()和hashCode()

我们在使用TreeSet时候,需要过滤掉重复的对象(重复定义:如果UserInfo对象里面有userId和userName2相对应值都想等),那就需要重写对象里equals()和hashCode()方法:
工具/原料
1

 WIN7

2

 Eclipse

方法/步骤1
1

用户信息实体类:public class UserInfo{    private Integer userId;    private String userName;    private Integer uerAge;    public Integer getUerAge() {        return uerAge;    }    public void setUerAge(Integer uerAge) {        this.uerAge = uerAge;    }    public Integer getUserId() {        return userId;    }    public void setUserId(Integer userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    @Override    public int hashCode() {        System.out.println('------hashCode----');        return 1;    }    @Override    public boolean equals(Object obj) {        System.out.println('------equals----');        if (obj instanceof UserInfo) {            UserInfo user = (UserInfo) obj;            if (this.userId.equals(user.getUserId())                    && this.userName.equals(user.getUserName())) {                return true;            }        }        return false;    }}

2

测试类:TestSet.javapublic class TestSet {    /**     * @param args     */    public static void main(String[] args) {        HashSet userset = new HashSet();        UserInfo user = new UserInfo(1001, '华安');        userset.add(user);        System.out.println(user.hashCode());        UserInfo user2 = new UserInfo(1002, '秋香');        userset.add(user2);        System.out.println(user2.hashCode());        UserInfo user3 = new UserInfo(1001, '华安');        userset.add(user3);        System.out.println(user3.hashCode());        System.out.println('userInfo:'+userset.size());        System.out.println('---------------');        Iterator iter2 = userset.iterator();        while (iter2.hasNext()) {            UserInfo userInfo = iter2.next();            System.out.println(userInfo);        }    }}

推荐信息