栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有Int数组的Java HashMap

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有Int数组的Java HashMap

问题是因为两者

int[]
不相等。

System.out.println(    (new int[] { 1, 2 }).equals(new int[] { 1, 2 })); // prints "false"

Map
和其他Java Collections framework类根据定义了其接口
equals
。来自
MapAPI

Collections framework接口中的许多方法都是根据

equals
方法定义的。例如,该
containsKey(Objectkey)
方法的规范说:“
true
当且仅当此映射包含
k
诸如这样的键的映射时,才返回
(key==null ? k==null :key.equals(k))
。”

注意,它们不必是同一对象。他们一定是

equals
。Java中的数组从扩展
Object
,其默认实现的
equals
return仅在对象标识上才返回true;因此,为什么要
false
在上面的代码段中进行打印。


您可以通过多种方式之一解决问题:

  • equals
    使用using 方法的数组定义自己的包装器类。
    java.util.Arrays
    equals/deepEquals
    • 并且不要忘记,当您时
      @Override equals(Object)
      ,您还必须
      @Override hashCode
  • 使用类似
    List<Integer>
    的是 没有 定义
    equals
    在它们所包含的价值观方面
  • 或者,如果您 可以 使用的引用相等
    equals
    ,则 可以 坚持使用现有的东西。就像您不希望上面的代码片段一起打印一样
    true
    ,您也不应该仅凭其值就可以找到数组。您必须每次都坚持使用并使用原始参考。

API

  • Object.equals
    Object.hashCode
    • 对于Java程序员来说,了解这些合同以及如何使其与系统的其余部分一起使用非常重要。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号