吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 579|回复: 3
收起左侧

[求助] HashSet重写hashcod问题

[复制链接]
ai1261107529 发表于 2022-4-23 14:57
重写hashcode后, 通过控制台看到s1,s2的哈希值相同,为什么equals比较返回结果为false呢  






23.png public class
SetDemo3 {    public static void main(String[] args) {
        //  Set集合去重复原因:先判断哈希值,再判断equals
        Set<Student> sets = new HashSet<>();

        Student s1 = new Student("无恙",20,'');
        Student s2 = new Student("无恙",20,'');
        Student s3 = new Student("周雄",21,'');
        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());
        System.out.println(s3.hashCode());

        System.out.println(Objects.equals(s1, s2)); //  更安全,内部还是 s1.equals(s2);
        System.out.println(s1.equals(s2));

        System.out.println(s1 == s2);
        System.out.println(s1);
        System.out.println(s2);

        sets.add(s1);
        sets.add(s2);
        sets.add(s3);
        System.out.println(sets);
    }
}



=================================================只重写了hashcode=====================================================================  /**
        只要两个对象内容一样,结果一定是true
     * @Param o
     * @return
     */
//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || getClass() != o.getClass()) return false;
//        Student student = (Student) o;
//        return age == student.age && sex == student.sex && Objects.equals(name, student.name);
//    }

    /**

     */
    @Override
    public int hashCode() {
        return Objects.hash(name, age,sex);
    }
QQ截图20220423144143.png
QQ截图20220423144102.png
12.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Todd 发表于 2022-4-23 17:41
都用idea了为什么不舍得点进去看看源码呢
Todd 发表于 2022-4-23 17:51

解决hash冲突

解决hash冲突
这个块就是解决hash冲突的,也就是hashcode 相同怎么办
Todd 发表于 2022-4-23 17:56
很简单,因为用的是Object的equals方法
而Object的equals方法并不是比较的 hashCode值
而是比较的内存地址
System.out.println 会调用对象的toString 方法 你没实现 默认也是调用Object的
而Object的toString 方法输出的后缀不是内存地址,而是hashCode的16进制的表示
image.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ai1261107529 + 1 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表