Java HashMap 返回值与我对 equals 和 hashcode 的理解不符

2023-11-30

以下代码示例的输出是:

{1--e=e2, 2--e1=e1}

package com.sid.practice;

import java.util.HashMap;
import java.util.Map;

public class InputOutputPractice 
{

    public InputOutputPractice() 
    {

    }

    public static void main(String[] args) 
    {
        Employee e = new InputOutputPractice().new Employee(1, "e");
        Employee e1 = new InputOutputPractice().new Employee(2, "e1");
        Employee e2 = new InputOutputPractice().new Employee(1, "e2");

        Map m = new HashMap();
        m.put(e, "e");
        m.put(e1, "e1");
        m.put(e2, "e2");
        System.out.println(m);

    }

    class Employee
    {
        public Employee(int id, String name)
        {
            this.id=id;
            this.name = name;
        }

        private int id;
        private String name;

        public String getName() 
        {
            return name;
        }

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

        public int getId() 
        {
            return id;
        }

        public void setId(int id) 
        {
            this.id = id;
        }

        @Override
        public boolean equals(Object obj) 
        {
            return ((Employee)obj).getId()==(this.getId());
        }

        @Override
        public int hashCode() 
        {
            return Integer.valueOf(getId()).hashCode();
        }

        @Override
        public String toString() 
        {
            return this.id + "--" + this.name;
        }
    }
}

我不明白该对象如何e2能够覆盖对象中的键e,但不是值。根据我的理解,输出应该是:

{1--e2=e2, 2--e1=e1}


事实上,你搞反了。该值被覆盖。到目前为止,钥匙还没有更换过HashMap就而言,e 和 e2 是相同的。

你的输出是{1--e=e2, 2--e1=e1}:

key = e, value = "e2" (which overrode the old value "e")
key = e1, value = "e1" 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java HashMap 返回值与我对 equals 和 hashcode 的理解不符 的相关文章

随机推荐

  • 比较 2 个对象 PHP

    我需要比较 2 个对象以删除重复项 查找新条目 这些对象不相同 但它们包含相同的用户名密钥 这是布局 数据库对象 array 0 db gt username 0 db gt something 1 db gt username 1 db
  • 如何将多个 LineString 行组合成一个单行集合

    我正在使用 SQL Server 2008 和Geometry数据类型来存储英国道路列表 我从地形测量战略数据集 每条路被分成多行 每行包含一行 A Linestring由一段组成 例如A369由18条独立的线路组成 如下图所示 我想要做的
  • Angular 9 路线给出空白页面,没有错误

    我刚刚升级到 Angular 9 并使用延迟加载创建了一些子路由 在这些更改之前 我的项目和我的路线运行得很好 但在这两个更改之后 我的项目和路线工作得很好 HomeComponent路线 路径 工作正常 但如果我尝试单击其他路线的链接 使
  • 批处理:在我的代码循环期间,它停止设置变量。欢迎大家帮忙

    goto time time set tm time set hh tm 0 2 set mm tm 3 2 set ss tm 6 2 set ms tm 7 2 goto date date set dt date set wd dt
  • 如何使用C#获取Win7的SSID和RSSI

    我对Win7和WMI很陌生 请告诉我在哪里可以看到 WiFi 的活动接入点以及如何获取每个接入点的 ssid rssi 我有使用 ManagementClass mc new ManagementClass root WMI MSNdis
  • java声音淡出

    使用 javax sound sampled 我想淡出我开始无限循环的声音 这就是我开始发出声音的方式 Clip clip AudioSystem getClip AudioInputStream inputStream AudioSyst
  • facebook-unity-sdk 6.2.1 Unity5 iOS 编译错误的解决方法

    当我尝试在 iOS 上编译时 出现以下错误 在 iOS 上 FBLinkShareParams dialogParams FBLinkShareParams alloc init autorelease Users Daniel Repos
  • 将Android ArrayList的内容发送到PHP

    我是一名 PHP 开发人员 中级 在家练习一些 Android 的东西 我已经创建了一个数组列表 它将提取到我的 Android 应用程序内的 sqlite 数据库中并填充 ListView 现在我正试图将这一水平更进一步 我想将该数组列表
  • 如何使用 C# 检测包含尾随逗号的无效 JSON?

    是的 是的 我知道有无数关于检测无效 Json 的帖子 他们都说同样的事情 尝试解析或反序列化对象 你猜怎么了 在这种情况下 Json NET 很乐意解析我格式错误的 JSON 并且不会抱怨 我认为我需要澄清一下 我的 JSON 唯一的问题
  • 在 React JSX 中使用 if 语句

    你能像这样在 JSX 中使用 if 语句吗 var chartGraphContent div if this state modalityGraph nca gt 0 div div div
  • r 分组依据和计数

    我正在处理一个数据集 如下所示 Id Date Color 10 2008 11 17 Red 10 2008 11 17 Red 10 2008 11 17 Blue 10 2010 01 26 Red 10 2010 01 26 Gre
  • 检查 CRC 多项式的错误检测能力

    我试图找出如何计算任意 CRC 多项式的错误检测能力 我知道有多种错误检测功能可能 或可能不适用于 任意多项式 检测单个比特错误 所有 CRC 都可以执行此操作 因为这只需要 CRC 宽度 gt 1 突发错误检测 所有 CRC 都可以检测大
  • 多个开发人员如何在连接到单个 Firebase 控制台的同一个 Android 应用上工作?

    我的本地 Android 应用程序在 google firebase 控制台中与 google services json 中配置的 SHA 密钥同步 另一端的开发者如何 可以将项目设置为使用相同的 firebase 控制台和 json 文
  • 从生产文件夹创建 git 存储库

    我有一台带有生产网站的机器 我想在该机器上创建一个 git 存储库 以便使用 git 管理该网站 所以我做的第一件事就是在生产机器中创建一个空的 git 存储库 mkdir repos cd repos mkdir production g
  • 如何找到Tkinter当前使用的Tcl/Tk库的路径?

    TCL LIBRARY and TK LIBRARY环境变量可用于通过正确的 Tcl Tk 安装来绑定 Tkinter 如何从工作的 Tkinter 实例获取 Tcl Tk 的位置 我正在使用 Tkinter 在非虚拟 Python 中运行
  • itext 7.1 如何检查图像是否旋转

    在 itext 7 1 中 我使用以下代码将图像添加到 pdf 文档中 Document document new Document writerPdf make a new document object ImageData imgDat
  • 我的 xpages 上仅在午夜为用户调整日期

    我们在 xpages 中遇到了一个关于日期的非常奇怪的问题 我们的 Notesdocument 包含一个日期字段 并且该值只是一个日期 没有时间部分 在 xpage 中 我已指定将日期显示为日期 时间值 网页上的日期显示正确 但我们现在收到
  • 如何将 pygame.image.save 输出到变量而不是文件?

    我想发送一个pygame surface Surface到另一台计算机使用socket图书馆 我尝试使用pygame image tostring但它花了900kb 但是当我使用pygame image save我用过jpg格式化只需要45
  • Java Stream Collectors.toList() 无法编译

    任何人都可以解释为什么下面的代码无法编译但第二个代码可以编译 不编译 private void doNotCompile List
  • Java HashMap 返回值与我对 equals 和 hashcode 的理解不符

    以下代码示例的输出是 1 e e2 2 e1 e1 package com sid practice import java util HashMap import java util Map public class InputOutpu