【问题标题】:Inserting object in HashMap在 HashMap 中插入对象
【发布时间】:2016-03-18 07:43:05
【问题描述】:

在HashMap中,当我们输入一个对象时,它会计算key的hashCode然后去它指向的桶。如果存储桶已经包含另一个具有相同键的对象,但值不同。它是否应该重载 equal() 方法以及如何重载?请帮忙

【问题讨论】:

  • 您的问题是什么?重写这些库,制作另一个库?您也可以阅读源代码...
  • 如果地图已经包含该键的值,则新值将替换与该键关联的旧值。记录在案:docs.oracle.com/javase/8/docs/api/java/util/Map.html#put-K-V-
  • 你能解释一下我们如何覆盖HashMap中的hashCode()和equals()吗?
  • 您不要在 HashMap 中覆盖这些方法。如果您希望将其用作 HashMap 的键,并且两个不同的实例可以相等,则可以在您的类中覆盖这些方法。
  • 所以如果两个不同的键给出相同的 hashCode 那么会发生什么?

标签: java collections hashmap equals hashcode


【解决方案1】:

这是一个价值对问题。

只要将 key/value 对放到 Hashmap 中,如果 key 相同,则旧条目将被新的覆盖。

这些值永远不会相互比较,你把你想要的东西放在Hashmap 中,Hashmap 不应该在你覆盖条目时警告你。

public V put(K key, V值)

将指定值与此映射中的指定键相关联。如果 映射先前包含键的映射,旧值被替换。

【讨论】:

  • 我的任务是为员工类(ename,age,dept)创建一个对象集合,我必须根据员工的名字来排列员工对象,如果他们有相同的名字,那么就给他们排序按年龄和年龄相同,然后按部门排序。那我该如何处理呢?
  • 对密钥使用唯一标识符,在您的情况下,该名称不是有效的标识符。
  • @user5533204 看起来您被要求对员工列表进行排序,而不是使用 HashMap。 Google 用于“Java 中的对象排序列表”。
猜你喜欢
  • 2023-03-08
  • 2010-09-19
  • 2021-03-15
  • 2021-04-21
  • 2023-03-16
  • 2020-07-10
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多