zoukankan      html  css  js  c++  java
  • 如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?

    如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?

    ----答案是 可以

    原因:

    在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。

    这里不可以重复是说equals和hashcode只要有一个不等就可以了。

    例子:

    TestObject t1= new TestObject();
    t1.A=1;
    TestObject t2= new TestObject();
    t1.A=2;
    Map map= new HashMap();

    @Override
    public int hashCode() {
    return 5;
    }
     

    map.put(t1, "A");
    map.put(t2,"B");

    System.out.println(map.get(t1));
    System.out.println(map.get(t2));

    ----A

          B

    一、当我们向一个set、HashMap、HashSet、HashTable集合中添加某个元素,集合会首先调用该对象的hashCode方法,

    这样就可以直接定位它所存储的位置,若该处没有其他元素,则直接保存。
    若该处已经有元素存在,就调用equals方法来匹配这两个元素是否相同,相同则不存,不同则散列到其他位置

    二、hashCode重要么?
    对于List集合、数组而言,他就是一个累赘,不重要;但是对于HashMap、HashSet、HashTable而言,它变得异常重要。

  • 相关阅读:
    Windows-快速预览文件-QuickLook
    Chrome简洁高效管理下载项
    有Bug?你的代码神兽选对了吗
    保护视力-刻不容缓
    一次看懂 Https 证书认证
    Web前端助手-功能丰富的Chrome插件
    Chrome自动格式化Json输出
    网络爬虫
    彻底搞懂Cookie,Session,Token三者的区别
    Redis内存满了的解决办法
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3644111.html
Copyright © 2011-2022 走看看