您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

常规地图则不行。

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

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

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

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

其他 2022/1/1 18:28:30 有478人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶