当前位置: 首页 > 面试题库 >

不论大小写如何检查地图中的键?

高增
2023-03-14
问题内容

我想知道HashMap中是否存在特定的键,所以我正在使用containsKey(key)方法。但这是区分大小写的,即如果存在带有Name的键并且我正在搜索name,它不会返回true。那我有什么办法可以不打扰钥匙的情况呢?

谢谢


问题答案:

常规地图则不行。

“ abc”是与“ ABC”不同的字符串,它们的哈希码不同,并且其equals()方法相对于彼此将返回false。

最简单的解决方案是在插入/检查之前将所有输入都简单地转换为大写(或小写)。您甚至可以编写自己的Map包装程序,以确保一致性。

如果您要保持提供的键的大小写不变,但要进行不区分大小写的比较,则可以考虑使用TreeMap并提供自己的Comparator,该比较器将不区分大小写地进行比较。但是,在走这条路线之前,请三思而后行,因为您最终
遇到一些无法调和的不一致之处-
如果有人打了电话,那么地图中存储的密钥是​​什么情况?您甚至可以说得通吗?如果有人将您的地图包装在标准中(例如,您将失去功能),您是否感到满意?还是如果有人碰巧要遍历您的键集,而他们自己的快速“包含”检查通过使用您会得到不一致的结果呢?同样会有很多其他情况。
map.put("abc", 1)``map.put("ABC", 2)``HashMap``equals() 请注意, 这样做
违反了Map的约定
(因为键相等性是根据keys的equals()方法定义的),因此它实际上在任何意义上都不可行。


维护严格的大写地图 非常 容易使用和维护,并且具有实际上是合法的Map实现的优势。



 类似资料:
  • 问题内容: 我遇到的问题是我无法让我的密码验证程序来检查字符串,以确保其中的一个字符为大写字母,而一个字符为小写字母,它将检查整个字符串中是否存在一个字符。其他,并根据要检查的语句打印错误消息。 我已经查看了该站点和Internet上的答案,但是找不到。这是功课。 下面是我当前的代码。 问题答案: 要确定字符串是否包含大写和小写字符,可以使用以下命令: 这使您可以检查: 本质上,这通过检查Stri

  • 问题内容: 因此,我正在从Web服务加载图像,但是图像的大小有时小于或大于其他图像,当我将其放入android的ListView中时,可视化效果看起来很愚蠢。我想固定ImageView的大小,以便仅在图像大小大于预设值时才显示图像的一部分。我已经尝试了所有可以想到的设置setMaxWidth / setMaxHeight,将比例类型设置为centerCrop,使用ClipableDrawable包

  • 问题内容: 有没有一种简单的方法来检查Golang项目的大小?它不是可执行文件,而是我要在自己的项目中导入的软件包。 问题答案: 您可以通过查看目录来查看库二进制文件的大小(如果未导出,则默认为)。 因此要检查一些http pkgs 的大小。首先安装它们: 我的64位MacOS()的KB二进制大小: 编辑: 库(包)的大小是一回事,但是在链接阶段之后,可执行文件中占用的空间可能有很大的不同。这是因

  • 问题内容: 我在Windows中编写Python脚本。我想根据文件大小做一些事情。例如,如果大小大于0,我将向某人发送电子邮件,否则继续其他操作。 如何检查文件大小? 问题答案: 使用,并使用结果对象的成员: 输出以字节为单位

  • 问题内容: 宣言: 然后这个 返回true,但如果声明为: 然后返回false,因为比较区分大小写。 如何使该比较不区分大小写? 问题答案: 您可以使用 将字符串转换为所有小写字符

  • 问题内容: 我在本地运行MySQL数据库以进行开发,但是部署到使用Postgres的Heroku。Heroku处理几乎所有内容,但是不区分大小写的Like语句变得区分大小写。我可以使用iLike语句,但是我的本地MySQL数据库无法处理该语句。 编写与MySQL和Postgres兼容的不区分大小写的查询的最佳方法是什么?还是我需要根据与我的应用程序交谈的数据库编写单独的Like和iLike语句?