gpt4 book ai didi

java - 不区分大小写的 HashMap 保留原始 key ?

转载 作者:行者123 更新时间:2023-11-30 07:15:00 25 4
gpt4 key购买 nike

我需要将键存储为不区分大小写,并且键的所有值(如 STATE/state/State)都合并到一个集合中。但是要注意的是我需要在某些时候返回原始 key 的区分大小写版本,因此通用 CaseInsensitiveMap 不起作用。我只需要返回添加的“state”的第一个大写字母,因此在这种情况下,我保留 STATE 并丢弃 state/State。

我看过一个 few options用于实现此数据结构,例如 Guava HashMultimap 和 Tuples,但似乎都不太合适。

<CaseInsensitiveOriginalKey, OriginalKey, Set<Values>>

例如,如果我添加一个值为 {Texas, Oklahoma} 的键“State”,它将存储为:

<state, State, {Texas, Oklahoma}>

我的想法是,如果我创建某种 .add(StATe, {Nebraska}) 然后 map ,看到一个不区分大小写的 'state' 条目已经存在,变成:

<state, State, {Texas, Oklahoma, Nebraska}>

对于新 key ,.add(COLOR, {blue, red})

整体 map 变为:

<state, State, {Texas, Oklahoma, Nebraska}>
<color, COLOR, {blue, red}>
  • .get(ColoR) 返回 {red, blue}
  • .getKey(coLOR) 返回颜色

关于如何最好地实现这一点有什么想法吗?

最佳答案

您可以维护两个 map :

  • 一个是 Map<String, Set<String>>将不区分大小写的键映射到相应的字符串集(例如 "state" → {"Texas", "Oklahoma"} )。

  • 另一个是Map<String, String>将不区分大小写的键映射到其对应的区分大小写的键(例如 "state" → "State" )。

您可以创建自己的类,将这两个映射作为私有(private)字段,并确保在添加/删除/更新配对时它们保持同步。

关于java - 不区分大小写的 HashMap 保留原始 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com